美文网首页
AIDL用法三

AIDL用法三

作者: _Youngjim | 来源:发表于2018-02-08 11:34 被阅读0次

    本文主要是对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是否死亡

    相关文章

      网友评论

          本文标题:AIDL用法三

          本文链接:https://www.haomeiwen.com/subject/taizzxtx.html