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
,在这种情况下,您可能没有明显的重试路径。