我有一个 Android 服务,使用单独的线程对图像进行一些后台处理。如果该服务或线程发生错误,最佳实践是如何通知启动该服务的 Activity 并允许应用程序恢复到稳定状态(即在启动服务之前的状态)。
我可以在服务内部发布 Toast 或 Notification,但这并不能帮助我。我想告知用户存在问题,同时使应用程序恢复到稳定状态。
我有一个 Android 服务,使用单独的线程对图像进行一些后台处理。如果该服务或线程发生错误,最佳实践是如何通知启动该服务的 Activity 并允许应用程序恢复到稳定状态(即在启动服务之前的状态)。
我可以在服务内部发布 Toast 或 Notification,但这并不能帮助我。我想告知用户存在问题,同时使应用程序恢复到稳定状态。
Messenger
在服务和主应用程序之间传递信息。private Messenger = mMessengerCliente = new Messenger(new IncomingHandler());
/**
* Handler of incoming messages from service.
*/
private class IncomingHandler extends Handler {
@Override
public void handleMessage(Message msg) {
switch (msg.what) {
case MSG_1:
//actions to perform on message type 1
break;
case MSG_2:
//actions to perform on message type 2
break;
default:
super.handleMessage(msg);
}
}
}
将 Messenger
对象作为 Extra
或绑定到服务时传递。
在您的服务中,恢复 Messenger
对象并使用它进行通信:
mMsgClientMain = (Messenger)intent.getExtras().get(EXTRA_MESSENGER);
Message msg = Message.obtain(null, MSG_1, arg1, arg2);
msg.replyTo=reply_to; // if you need to have bidirectional communication, pass here the service messenger object
mMsgClientMain.send(msg);
敬礼。