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 <[email protected]> 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 [email protected]
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/android-developers?hl=en
-~----------~----~----~----~------~----~------~--~---