This seems to be the fix.

oneway interface IRemoteServiceCallback {
     /**
      * Called when the service has a new value for you.
      */
     void valueChanged(int value);
     void valueChangedList(in List values);
     void valueString(String value);

}

On Aug 15, 12:44 am, D <donnie.h....@gmail.com> wrote:
> Hi,
>
> I am having trouble passing a List type from a remote service to the
> UI activity.
> Here is a modified version of RemoteService example from the APIDemo.
> (only included where its modified)
>
> PROBLEM: The call back function (for List) is called successfully, but
> the List returned is empty...
>
> It works fine when the service does not run in a remote process.
> (w/o android:process=":remote" in the manifest file)
>
> Why is this happening...?
>
> Also, when I tried Map type, it didn't even successfully generate a
> IRemoteServiceCallback.java file....
> it tries to do new Map().... and complains that its an abstract
> class..
> (FYI, List instantiates by new ArrayList())
>
> 1. in IRemoteServiceCallback.java
>
> oneway interface IRemoteServiceCallback {
>     /**
>      * Called when the service has a new value for you.
>      */
>     void valueChanged(int value);
>     void valueChangedList(out List values);
>     void valueString(String value);
>
> }
>
> 2. In RemoteServiceBinding.java
>   /**
>      * This implementation is used to receive callbacks from the
> remote
>      * service.
>      */
>     private IRemoteServiceCallback mCallback = new
> IRemoteServiceCallback.Stub() {
>         /**
>          * This is called by the remote service regularly to tell us
> about
>          * new values.  Note that IPC calls are dispatched through a
> thread
>          * pool running in each process, so the code executing here
> will
>          * NOT be running in our main thread like most other things --
> so,
>          * to update the UI, we need to use a Handler to hop over
> there.
>          */
>         public void valueChanged(int value) {
>                 Log.d("ee", "valuechanged=" + value);
>                 mHandler.sendMessage(mHandler.obtainMessage(BUMP_MSG, value,
> 0));
>         }
>
>                                 public void valueChangedList(List values) 
> throws RemoteException {
>                                         // TODO Auto-generated method stub
>                                         Log.d("ee", "valuechangedlist=" + 
> values.toString());
>                                         
> mHandler.sendMessage(mHandler.obtainMessage(LIST_MSG, values));
>                                 }
>
>                                 public void valueString(String value) throws 
> RemoteException {
>                                         Log.d("ee", "valueString=" + value);
>                                 }
>     };
>
> 3. In RemoteService.java
>
>    private final Handler mHandler = new Handler() {
>         @Override public void handleMessage(Message msg) {
>             switch (msg.what) {
>
>                 // It is time to bump the value!
>                 case REPORT_MSG: {
>                     // Up it goes.
>                     int value = ++mValue;
>
>                     // Broadcast to all clients the new value.
>                     final int N = mCallbacks.beginBroadcast();
>                     for (int i=0; i<N; i++) {
>                         try {
>                             mCallbacks.getBroadcastItem(i).valueChanged
> (value);
>                                         List<String> values = new 
> ArrayList<String>
> ();
>                                         values.add("Hello, Mars");
>                                         mCallbacks.getBroadcastItem
> (i).valueChangedList(values);
>                                         
> mCallbacks.getBroadcastItem(i).valueString
> ("HEEELLLLOOOO");
>                         } catch (RemoteException e) {
>                             // The RemoteCallbackList will take care
> of removing
>                             // the dead object for us.
>                         }
>                     }
>                     mCallbacks.finishBroadcast();
>
>                     // Repeat every 1 second.
>                     sendMessageDelayed(obtainMessage(REPORT_MSG),
> 1*1000);
>                 } break;
>                 default:
>                     super.handleMessage(msg);
>             }
>         }
>     };
--~--~---------~--~----~------------~-------~--~----~
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
-~----------~----~----~----~------~----~------~--~---

Reply via email to