Been using remote interfaces for quite a while now, but the time has come to increase the amount of data i need to pass between processes. Following the Designing a Remote Interface using aidl examples/ tutorial i have had some success but have now come to a problem.
My activity binds to my service no problem, the callbacks work, but the data i send does not reach the client. My code is an extension of "Pass by value Parameters using Parcelables" from the "Designing a Remote Interface using aidl" page. The only difference is the amount of data, it has 18 int's and 3 Doubles. As you will see below, once i have entered the data into the parcel, i create my Parcelable using .createFromParcel(p) this however does not seem to work, even when my Parcelable is reading from the parcel no data gets read. Here is my code for sending the data to the client. /* * Send the latest info to the bound apps */ private void updateBoundApps(){ if(mCallbacks.beginBroadcast() > 0){ if(gLOG){Log.d(TAG,"updateBoundApps " + mSMNI.int1);} // Always shows int1 as corret value (non 0) Parcel p = Parcel.obtain(); p.writeInt(mSMNI.int1); p.writeInt(mSMNI.int2); p.writeInt(mSMNI.int3); p.writeInt(mSMNI.int4); p.writeInt(mSMNI.int5); p.writeInt(mSMNI.int6); Iterator<Entry<Object, Object>> itNew = mSMNI.intMap.entrySet ().iterator(); for(int i = 0 ; i < 6; i++){ if(itNew.hasNext()){ Map.Entry<Object, Object> eNew = itNew.next(); p.writeInt((Integer) eNew.getKey()); p.writeInt((Integer) eNew.getValue()); }else{ p.writeInt(0); p.writeInt(0); } } p.writeDouble(mLastLoc.Double1); p.writeDouble(mLastLoc.Double2); p.writeDouble(mLastLoc.Double3); MPSData mpsd = MPSData.CREATOR.createFromParcel(p); // Send the message Message msg = mHandler.obtainMessage(REPORT_MSG, mpsd); mHandler.sendMessageDelayed(msg, 1*1000); p.recycle(); } mCallbacks.finishBroadcast(); } Here is my Parecelable: public class MPSData implements Parcelable{ public int int1; public int int2; public int int3; public int int4; public int int5; public int int6; public int int7; public int int8; public int int9; public int int10; public int int11; public int int12; public int int13; public int int14; public int int15; public int int16; public int int17; public int int18; public double double1; public double double2; public double double3; public static final Parcelable.Creator<MPSData> CREATOR = new Parcelable.Creator<MPSData>() { @Override public MPSData createFromParcel(Parcel in) { Log.d("MPSData","createFromParcel dataAvail " + in.dataAvail() + " dataSize " + in.dataSize()); return new MPSData(in); } public MPSData[] newArray(int size) { return new MPSData[size]; } }; public MPSData(){ } private MPSData(Parcel in){ Log.d("MPSData","MPSData(Parcel in)"); readFromParcel(in); } @Override public int describeContents() { // TODO Auto-generated method stub return 0; } public void writeToParcel(Parcel out) { out.writeInt(int1); out.writeInt(int2); out.writeInt(int3); out.writeInt(int4); out.writeInt(int5); out.writeInt(int6); out.writeInt(int7); out.writeInt(int8); out.writeInt(int9); out.writeInt(int10); out.writeInt(int11); out.writeInt(int12); out.writeInt(int13); out.writeInt(int14); out.writeInt(int15); out.writeInt(int16); out.writeInt(int17); out.writeInt(int18); out.writeDouble(double1); out.writeDouble(double2); out.writeDouble(double3); } public void readFromParcel(Parcel in) { int1= in.readInt(); Log.d("MPSData","readFromParcel(Parcel in) " + int1); // Always shows int1 as 0 int2= in.readInt(); int3= in.readInt(); int4= in.readInt(); int5= in.readInt(); int6= in.readInt(); int7= in.readInt(); int8= in.readInt(); int9= in.readInt(); int10= in.readInt(); int11= in.readInt(); int12= in.readInt(); int13= in.readInt(); int14= in.readInt(); int15= in.readInt(); int16= in.readInt(); int17= in.readInt(); int18= in.readInt(); double1= in.readDouble(); double2 = in.readDouble(); double3 = in.readDouble(); } @Override public void writeToParcel(Parcel dest, int flags) { // TODO Auto-generated method stub } } Thanks for any help; Liam --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Android Developers" group. To post to this group, send email to android-developers@googlegroups.com To unsubscribe from this group, send email to android-developers+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/android-developers?hl=en -~----------~----~----~----~------~----~------~--~---