Android Binder实战开发指南之Java层直接调用Native BinderService
Android Binder实战开发指南目录:
Android Binder实战开发指南Native层获取Process进程名和调用者进程名
Android Binder实战开发指南之Java层直接调用Native Binder Service
Android Binder开发实战指南之创建Native Binder Service
Android Binder实战开发指南之Native层使用Java层Binder服务
Android Binder实战开发指南之创建Java层Binder系统服务
前言
承接上一篇文章Android Binder实战开发指南之创建Java层Binder系统服务,本篇来介绍一下怎么通过Java直接使用Native Binder Service。这里使用的是前面创建的Native Service。
实现步骤
如果一直从前面的文章看过来,那么实现起来也不是很复杂,无外乎先获取Native Binder Service的远程代理,然后通过远程代理调用实际的服务端。下面直接奉上代码
private void callNativeBinderServiceFun() {
//获取Native Binder Service的代理
IBinder binder = ServiceManager.getService("service.testservice");
String DESCRIPTOR = "android.TestServer.ITestService";
try {
if (binder != null) {
Parcel data = Parcel.obtain();
Parcel replay = Parcel.obtain();
try {
data.writeInterfaceToken(DESCRIPTOR);
//通过BpBinder进行数据交互
binder.transact(IBinder.FIRST_CALL_TRANSACTION, data, replay, 0);
int result = replay.readInt();
Log.e("Client","get result :" + result);
} finally {
replay.recycle();
data.recycle();
}
}
} catch (RemoteException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
然后分别运行Native Binder Service和Android工程,具体的运行结果如下所示

服务端

Android应用端
总结
如上就是 Java直接调用Native Binder Service的具体步骤和实现原理,当前看懂这些的前提是必须对Binder的原理有一定的理解和掌握。到这里Binder实战大荟萃的四篇文章已经完全结束,这四个情景应该概括了实际使用中的绝大部分场景,掌握了这四种Binder的实际应用,我想对于Binde的实际应用开发应该不是难事了。
最后统一奉上源码Binder实战大荟萃源码,由于牵涉到公司信息所以做了些特殊处理,各位谅解!

被折叠的 条评论
为什么被折叠?



