在IPC期间发送消息时如何处理RemoteException?

时间:2017-03-01 22:12:27

标签: android android-activity android-service ipc android-service-binding

我使用MessengerHandler在服务和客户端之间发送消息。代码与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;
        }
    }
}

0 个答案:

没有答案