Binder-从Java层说起

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Binder-从Java层说起相关的知识,希望对你有一定的参考价值。

 

  Java层的binder是对C++层的Native Binder的封装,提供给其他Java code方便使用;关于与Native Binder的监听与交互,是交给Java Binder的jni部分完成的

这里涉及的code如下

framework/base/core/java/android/os/  
    - IInterface.java
    - IBinder.java
    - Parcel.java
    - IServiceManager.java
    - ServiceManager.java
    - ServiceManagerNative.java
    - Binder.java  


framework/base/core/jni/    
    - android_os_Parcel.cpp
    - AndroidRuntime.cpp
    - android_util_Binder.cpp (核心类)

总体的架构图如下

技术分享

 

 整个Binder流程里涉及到的类如下

技术分享

 

先看Java层的code

其中IBinder是用来做通信的接口,IInterface是程序直接逻辑方法的接口

各个类之间的关系如下图

技术分享

 

以上是关于Binder-从Java层说起的主要内容,如果未能解决你的问题,请参考以下文章

Android Binder 框架层详解

Binder驱动理解

Android native进程间通信实例-binder篇之——HAL层访问JAVA层的服务

Binder 机制Native 层 Binder 机制分析 ( service_manager.c | 开启 Binder | 注册 Binder 进程上下文 | 开启 Binder 循环 )(代码片

Binder 系列总结

结合Binder机制看ActivityManager