Binder连接断开重启服务
来源:互联网 发布:网络市场调查问卷 编辑:程序博客网 时间:2024/06/07 14:28
当我们使用AIDL,在前台Activity中获取到binder实例后,如果服务器端进程由于某种原因异常终止,这个时候会导致binder连接断开死亡。
1.DeathRecipient
Binder中提供了两个配对的方法linkToDeath和unlinkToDeath。通过linkToDeath方法可以设binder设置死亡代理,当binder死亡后,系统会回调binderDied方法,我们我们就可以在方法中移除之前绑定的binder代理,并重新绑定远程服务。
private IBinder.DeathRecipient mDeathRecipient = new IBinder.DeathRecipient() {
@Override
public void binderDied() {
Log.d(TAG, "binder died. name:" + Thread.currentThread().getName());
if (mRemoteBookManager == null)
return;
mRemoteBookManager.asBinder().unlinkToDeath(mDeathRecipient, 0);
mRemoteBookManager = null;
// 这里重新绑定远程Service
}
};
设置方法:
mRemoteManager.asBinder().linkToDeath(mDeathRecipient, 0);
另外,我们也可以通过binder.isBinderAlive()方法来判断Binder是否已经死亡。
2.在onServiceDisconnected重连服务
当binder断开连接后,系统会回调onServiceDisconnected,然后我们可以重连服务。
它们的区别在于,onServiceDisconnected是在客户端UI线程中执行的,而binderDied是在客户端的Binder线程池中被回调的。
盗用刚哥的binder原理图用用
- Binder连接断开重启服务
- Iptables模块reload问题(解决iptables服务重启导致TCP长连接断开)
- Android IM(五)连接断开重连
- PHP中mysql连接断开重连接机制
- ubuntu 12.04 在没有断开PPPOE网络连接的情况下无法关机或重启
- 远程登录win7系统,只能注销,断开连接,也可以关机或重启
- win7笔记本电脑的无线网连接总是自动断开,重启之后才能恢复解决办法
- win7笔记本电脑的无线网连接总是自动断开,重启之后才能恢复解决办法
- openfire Android学习(五)------连接断开重连
- 再淡spring jdbc 连接池断开重连设置
- zookeeper 大量连接断开重连原因排查
- zookeeper 大量连接断开重连原因排查
- zookeeper 大量连接断开重连原因排查
- zookeeper 大量连接断开重连原因排查
- debug(2) 连接的时候一直断开、重连
- zookeeper 大量连接断开重连原因排查
- zookeeper 大量连接断开重连原因排查
- 重启apache后,自动断开
- IE下如何判断一个 div是否隐藏
- 快速排序及其优化
- 分布式架构学习之:使用Redis3.0集群实现Tomcat集群的Session共享
- java文件下载
- 目录操作
- Binder连接断开重启服务
- jqueryMobile 按钮
- Java 包与类的命名(util、service、tool)区别
- lleetcode 307. Range Sum Query
- EOS Platform7.2/7.5/7/.6安全开启开启方式
- 微信公众号错误总结
- linux常用命令
- Codeforces Round #415 (Div. 2) B. Summer sell-off
- node+express+mongodb,登陆代码备份二(+promise)(自用)