我有一个启动类型和绑定类型的服务(定义在这里)。它开始无限期地运行,然后一个单独的应用程序绑定到它:当这个应用程序被销毁时,它调用它的unbindService
ononDestroy
方法。
该服务应检测到此应用程序已完成。我读到了onUnbind方法,当所有客户端都从服务发布的特定接口断开连接时调用该方法。但是,我不需要知道所有客户端何时断开连接,而是任何断开连接。是否可以?
我认为,在关闭期间(在onDestroy
方法内部),应用程序可以向服务发送消息(利用服务已绑定的事实):稍后它应该调用该unbindService
方法,如下所示。
// method of the application
@Override
public void onDestroy() {
super.onDestroy();
service.closed(); // service is defined by IService.aidl
unbindService(...);
}
这样,应用程序会将最后一条消息发送到服务(service.closed()
方法),然后取消绑定服务。它可以正常工作吗?service.closed()
当消息到达其目的地时该方法是否返回?或者是否存在由于下一次调用方法而导致消息未传递的风险unbindService
?