我使用Messenger
和Handler
在服务和客户端之间发送消息。代码与here几乎完全相同。
我不确定如何处理RemoteException
因为我认为我应该有某种重试逻辑?我试图杀死服务进程但仍然没有捕获到RemoteException。那么我应该在此捕获中执行重试逻辑,或者因为消息尚未发送而在哪里可以重试?
private final static Messenger MESSENGER = new Messenger(new IncomingHandler());
public static void callService(final int command, final Bundle args) {
try {
final Message message = Message.obtain(null, command);
message.replyTo = MESSENGER;
if (args != null) {
message.setData(args);
}
serviceMsgr.send(message);
} catch (RemoteException e) {
Log.e(TAG, "The service has crashed.", e);
}
}
static class IncomingHandler extends Handler {
@Override
public void handleMessage(Message msg) {
Log.d(TAG, "Received from service: " + msg.what);
switch (msg.what) {
case xxxx:
...;
default:
super.handleMessage(msg);
break;
}
}
}