外观
如何处理服务端进程死亡和 Binder 断开?
标准回答
远端调用可能抛出 RemoteException,已有 Binder 可以通过 linkToDeath 注册 DeathRecipient,绑定服务还需要处理 ServiceConnection 的断开和绑定失效等回调。发现远端死亡后,我会使旧代理失效、清理旧回调和本地状态,再按受控策略重新连接,并重新注册监听。对于具有副作用的请求,重试前要区分是否已经执行,使用请求 ID 或幂等语义,避免重复操作。恢复过程中还要检查目标用户和服务可用性,防止无限重连。
延伸追问
isBinderAlive 只反映一次检查时的状态,检查通过后远端仍可能立即死亡。
内容来源
- Android Framework 知识手册 · 原条目
4-7