我的应用程序有一个活动和一个服务在同一个进程中运行。当用户通过单击 STOP 按钮终止活动时,活动会导致服务终止。
从 Android 文档中,我了解到系统可以终止一个进程以回收资源:
“一旦您的活动停止,如果需要恢复系统内存,系统可能会销毁实例。在极端情况下,系统可能会简单地杀死您的应用程序进程而不调用活动的最终 onDestroy() 回调,......”
问题1:是否有可能我的活动被杀死而不是服务?我希望我的服务保持活力。
如果答案是“是”,那么
问题2:是否有机制可以通知服务活动已被杀死?
IBinder.linkToDeath具有我需要的功能,但似乎适用于流程,而不是活动。
我想到了一种间接方法,例如让活动获得信号量的所有权并让服务使用线程来等待它。然后,当活动被杀死时,它将释放信号量并且服务将获取它,并提供通知。但我想知道是否没有我可以使用的以 android 为中心的技术。
[开始编辑]
在阅读了您提供的非常有用的评论后,我想澄清一下我所呈现的场景。
我已经启动了两个组件:一个活动和一个服务。应用程序被配置为在活动停止并被销毁后服务可以继续运行。用户可以多次重新启动/启动活动,它将使用相同的服务实例。
通常活动会在 onDestroy() 期间通知服务它已被销毁。但是 onDestroy() 可能不会被调用。
我想知道是否有一些特定于 android 的机制可以用来通知服务该活动已被终止,而无需调用其 onDestroy() 方法。
[结束编辑]
谢谢你的帮助。
将要