Android 确定进程是否已死亡?
有没有办法确定某个进程是否已死亡?我有一个系统服务,它在每个连接到它的客户机上存储信息。当承载该客户机的进程死亡时,我希望清理缓存。我在谷歌上搜索过,但这似乎是不可能的:( 我遇到的一个解决方案是使用Binder的linkToDeath,但该设计与我当前的设计不太匹配。有其他选择吗Android 确定进程是否已死亡?,android,aidl,Android,Aidl,有没有办法确定某个进程是否已死亡?我有一个系统服务,它在每个连接到它的客户机上存储信息。当承载该客户机的进程死亡时,我希望清理缓存。我在谷歌上搜索过,但这似乎是不可能的:( 我遇到的一个解决方案是使用Binder的linkToDeath,但该设计与我当前的设计不太匹配。有其他选择吗 感谢您可以使用isAlive()方法来确定线程的状态,或者使用getState()更精确地确定线程状态 Binder的方法是BinderAlive(),但我没有使用它,因此无法添加官方文档中未包含的任何内容。使用li
感谢您可以使用isAlive()方法来确定线程的状态,或者使用getState()更精确地确定线程状态
Binder的方法是BinderAlive(),但我没有使用它,因此无法添加官方文档中未包含的任何内容。使用
linkToDeath
的方法是我所知道的唯一方法
通常我会这样做:
- 拥有一个类,
,它由您的系统服务实现IMySystemService.aidl
- 有一个监听器,
,由每个客户端实现IMySystemServiceListener.aidl
- 添加一个方法,例如
IMySystemService.addListener(IMySystemServiceListener listener)
linkToDeath
,以获取每个客户端死亡时的回调。然后,您可以清理缓存的相关部分
如果您的项目已经很复杂,那么您可能已经有了一些适合每个客户机的侦听器了
您能否回答为什么linkToDeath
不适用于您的设计
缓存的一种常见模式是用于缓存-但这只有在客户端消失时对密钥对象进行垃圾收集时才有效。我相信,这反过来只能通过使用
linkToDeath
实现,所以我们回到了开始的位置!你说的“网格不好”是什么意思?谢谢你的想法。不过,我相信这只会告诉我当前线程是否已死亡。我希望找到一个解决方案,告诉我整个进程是否已死亡。