我在 Service MessengerService 上调用 bindService。它工作正常。之后,我调用 startService。
代码与此链接远程信使服务示例部分 http://developer.android.com/reference/android/app/Service.html 完全相同,只是我在活动中添加了一个 startService
这是客户端代码: Intent intnt = new Intent(context, MessengerService.class); intnt.putExtra("msg", "从活动到服务到处理程序 11 的字符串");
bindService(intnt, mConnection, Context.BIND_AUTO_CREATE);
intnt.putExtra("msg", "String from activity to service to handler 22");
startService(intnt);
在服务代码中:在 onStartCommand 中,无论我收到的意图是在 startService 中传递的什么消息,我都会将其发送回客户端处理程序。
我在 mClients.get(0).send(msg1) 行中获取索引超出范围异常。mClients 是附加到此服务并在绑定过程中存储的客户端数组。
代码与此链接远程信使服务示例部分 http://developer.android.com/reference/android/app/Service.html 完全相同,只是我在服务中添加了一个 onStartCommand
@Override
public int onStartCommand(Intent intent, int flags, int startId){
String str = intent.getStringExtra("msg");
Message msg1 = Message.obtain(null, MSG_STR_VALUE);
Bundle data = new Bundle();
data.putString("message", str);
msg1.setData(data);
System.out.println(str);
try {
s1.acquire();
} catch (InterruptedException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
try {
mClients.get(0).send(msg1);
} catch (RemoteException e) {
e.printStackTrace();
}
return START_STICKY;
}