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

Android IPC期间发送消息时如何处理RemoteException?,android,android-activity,android-service,ipc,android-service-binding,Android,Android Activity,Android Service,Ipc,Android Service Binding,我正在使用信使和处理程序在服务和客户端之间发送消息。代码几乎与相同 我不确定如何处理RemoteException,因为我假设应该有某种重试逻辑?我试图终止服务进程,但仍然没有捕获到RemoteException。因此,我应该在这个catch中执行重试逻辑,还是应该在哪里执行重试,因为消息尚未发送 private final static Messenger MESSENGER = new Messenger(new IncomingHandler()); public static voi

我正在使用
信使
处理程序
在服务和客户端之间发送消息。代码几乎与相同


我不确定如何处理
RemoteException
,因为我假设应该有某种重试逻辑?我试图终止服务进程,但仍然没有捕获到RemoteException。因此,我应该在这个catch中执行重试逻辑,还是应该在哪里执行重试,因为消息尚未发送

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;
        }
    }
}

“我试图终止服务进程,但仍然没有捕获到RemoteException”--你这到底是什么意思?@commonware抱歉,我解释错了。所以我试图杀死这个服务所在的包,但现在我认为这不会导致任何RemoteException?您知道何时会捕获此异常吗?我应该对此做些什么吗?“所以我试图杀死这项服务所使用的软件包”——无意冒犯,但我也不明白这一点。你到底在干什么?据我所知,终止进程的最简单方法是从Android Studio中终止它。如果您绑定到一个服务,并且该服务的进程被终止,那么您将获得
RemoteException
。好的,如果是这种情况,您应该在catch块中添加一些重试逻辑吗?否则,放在哪里最好?我不能回答这个问题。如果您得到一个
RemoteException
,您必须假设您需要一个新的
Messenger
。我不知道您的代码在哪里,从
callService()
等处执行此操作是否有意义。据我所知,您的应用程序无法触发其他应用程序向您发送其
Messenger
,在这种情况下,您可能没有明显的重试路径。“我试图终止服务进程,但仍然没有捕获RemoteException”“你这到底是什么意思?”Commonware抱歉,我解释错了。所以我试图杀死这个服务所在的包,但现在我认为这不会导致任何RemoteException?您知道何时会捕获此异常吗?我应该对此做些什么吗?“所以我试图杀死这项服务所使用的软件包”——无意冒犯,但我也不明白这一点。你到底在干什么?据我所知,终止进程的最简单方法是从Android Studio中终止它。如果您绑定到一个服务,并且该服务的进程被终止,那么您将获得
RemoteException
。好的,如果是这种情况,您应该在catch块中添加一些重试逻辑吗?否则,放在哪里最好?我不能回答这个问题。如果您得到一个
RemoteException
,您必须假设您需要一个新的
Messenger
。我不知道您的代码在哪里,从
callService()
等处执行此操作是否有意义。据我所知,您的应用程序无法触发其他应用程序向您发送其
Messenger
,在这种情况下,您可能没有明显的重试路径。