服务如何检测到某个活动已关闭?

时间:2012-04-29 17:39:38

标签: android android-service android-activity android-2.3-gingerbread

我有启动绑定类型的服务(定义为here)。它开始无限期运行,然后一个单独的应用程序绑定到它:当该应用程序被销毁时,它会调用unbindService方法上的onDestroy

服务应检测到此应用程序已完成。我读到了onUnbind方法,当所有客户端与服务发布的特定接口断开连接时,被调用。但是,我不需要知道所有客户端何时断开连接,但任何断开连接。有可能吗?

我认为,在关闭期间(在onDestroy方法内),应用程序可以向服务发送消息(利用服务绑定的事实):稍后它应该调用{{1方法,如下。

unbindService

通过这种方式,应用程序会将最后一条消息发送到服务(// method of the application @Override public void onDestroy() { super.onDestroy(); service.closed(); // service is defined by IService.aidl unbindService(...); } 方法),然后解除绑定服务。它可以正常工作吗?当消息到达目的地时,service.closed()方法是否返回?或者由于下一次调用service.closed()方法而导致邮件无法传递?

1 个答案:

答案 0 :(得分:2)

  

有可能吗?

让活动在解除绑定之前调用Binder上的方法,以表明它正在丢弃连接。

  

它可以正常工作吗?

它应该。 AIDL调用是同步的,因此在您的示例中使用unbindService()调用Binder之后才会发生closed()