初探Android中的binder机制 下载本文

},BIND_AUTO_CREATE);

binder 安全基础

binder服务端可以通过binder提供的两个api拿到客户端的uid和pid,从而决定是否要对这次请求进行处理:

getCallingUid();

getCallingPid();

binder 死亡通知机制

当端服务进程挂掉的时候,客户端是有必要知道的,可以通过binder引用对象的linkToDeath()方法来设置binder服务死亡监听机制。 如下代码所示:

publicBinderServiceProxy(IBinder binder){

if(binder.queryLocalInterface(DESCRIPITON) == null ){

remote = binder;

try {

binder.linkToDeath(new IBinder.DeathRecipient() {

@Override

publicvoidbinderDied() {

Log.i(\,\binder server is deaded.\);

}

},0);

} catch (RemoteException e) {

e.printStackTrace();

}

}

else

thrownew RuntimeException(\this is not a BpBinder.\);

}

可以在死亡通知处理中做一些资源回收的操作,或者再次重启服务等操作。

到现在为止,已经对binder的表象有了一个大概的了解了,注意只是表象。