且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

Android的:如何绑定服务可以注意到有关被杀客户端?

更新时间:2023-10-20 22:39:04

我找到了解决办法。

正如 RemoteCallbackList 文档如果注册的回调的过程中消失了,这个类会照顾从列表中自动删除它。如果你想要做更多的工作,在这种情况下,你可以创建一个实现onCallbackDied(E)方法的子类。

所以,我创建了一个子类 RemoteCallbackList 接口 IRemoteCallbackDied

So, i created a subclass for RemoteCallbackList and interface IRemoteCallbackDied:

   private interface IRemoteCallbackDied<E extends IInterface> {
      public void remoteCallbackDied(E callback, Object cookie);
   }

   private final class RemoteCallbackListWithDiedCB<E extends IInterface> extends RemoteCallbackList<E> {
      IRemoteCallbackDied<E> mRemoteCallbackDied;

      public RemoteCallbackListWithDiedCB(IRemoteCallbackDied<E> mRemoteCallbackDied)
      {
         this.mRemoteCallbackDied = mRemoteCallbackDied;
      }

      @Override public void onCallbackDied(E callback, Object cookie){
         super.onCallbackDied(callback, cookie);
         this.mRemoteCallbackDied.remoteCallbackDied(callback, cookie);
      }
   }

然后,我创建实施 IRemoteCallabackDied

   private final IRemoteCallbackDied<IModConnClient> mRemoteCallbackDied = new IRemoteCallbackDied<IModConnClient>() {
      public void remoteCallbackDied(IModConnClient mModConnClient, Object cookie)
      {
         Log.v("my_tag", "remote callback died!");
         /*
          * Some code
          */
      }
   };

和,终于,我的回调列表的定义就是这样:

and, finally, my callback list is defined just like that:

private RemoteCallbackListWithDiedCB<IModConnClient> mClients = new RemoteCallbackListWithDiedCB<IModConnClient>(mRemoteCallbackDied);