AIDL用法三

本文主要是对AIDL的扩展

前言

跨进程通信时,我们通过Binder进行通信,那么有的时候服务端会因为各种原因终止,导致Binder连接断裂。此时客户端在不知情的情况下继续调用服务就会出错。

解决方法

Binder中提供了两个方法linkToDeath和unlinkToDeath。通过前者给我们Binder设置一个死亡代理,当Binder死亡时,那我们就会收到通知,选择重调连接。

具体做法


    private IBinder.DeathRecipient mDeathRecipient=new IBinder.DeathRecipient(){
    @Override

        public void binderDied(){
            if(mBookControlle==null)
              return;
              //第二个标记为,设0即可
              mBookController.asBinder.unlinkToDeath(mDeathRecipient,0);
              mBookController=null;
              //TODO:这里重新绑定服务
    }
}

此外,还可以通过Binder.is.BinderAlive判断Binder是否死亡

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Iamnotthatgood Sorry,icannotpretendtobegenerouswhenyoupla...
    紫姬阅读 209评论 0 0
  • 小白迷迷茫茫的过着这生活,擦肩而过的人,形形色色,每个人都有着自己的故事,风冷冽的吹到小白的脸上,小白擦了擦鼻涕,...
    糖糖糖糖媛阅读 277评论 0 0
  • 断断续续,手头上的事情多了就忘在脑后了。还是应该找个地方记录下自己的心情,抑或说是写写随笔,也准备开篇小说,...
    mochalilei阅读 516评论 1 1
  • 试试,怎么写连载?
    阿槑爱败家阅读 128评论 0 0
  • 接下来的时间要外出一阵。 抱歉抱歉。
    阿琴姑娘阅读 6,867评论 88 71