一、原理
当Binder非正常消亡的时候,会导致远程调用失败,这样客户端功能就会受到影响。
解决:给Binder设置一个死亡代理,当Binder死亡时,我们就会收到通知,这个时候可以重新发起连接。
二、制作
1、前期准备
客户端:MainActivity.java
@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); createService(); } /*连接Service端,获取mIBookManger*/ private void createService(){ ServiceConnection connection = new ServiceConnection() { @Override public void onServiceConnected(ComponentName name, IBinder service) { //初始化mIBookManger mIBookManager = IBookManager.Stub.asInterface(service); } @Override public void onServiceDisconnected(ComponentName name) { } }; Intent intent = new Intent(this,BookService.class); bindService(intent,connection,BIND_AUTO_CREATE); }