AIDL用法三

2018-02-08  本文已影响0人  _Youngjim

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

上一篇 下一篇

猜你喜欢

热点阅读