关键字
- aidl
- 进程间通信
- binder机制
aidl
全名安卓接口定义语言,用于进程间通信。简单理解的话,就是类似应用的服务器和客户端。服务器开启一个服务处理数据,客户端传递数据以及响应回调。具体使用方法见AndroidStudio实现AIDL。建议自己跟着文章手写一遍,并细看build之后由aidl文件生成的java文件中内容。
4种进程间通信
- Activity(应用跳到拨打电话页面)
- ContentProvider(获取手机系统联系人信息,音视频等)
- BroadcastReceiver(类似听收音机的广播,被动接收)
- Service(远程Service,跟aidl结合使用)
Binder机制
Binder是安卓进程间通讯的一种方式,aidl是Binder通信的一个实践,Binder采用的是C/S架构,最上层的java层(C/S),经过framework层,JNI层,native层,最终通过ioctl(对设备io通道进行管理)跟内核层进行通信。贯穿始终的是一个叫做ServiceManger的管理类。每启动一个server进程,就会默认生成16个线程大小的线程池(每个应用的客户端跟server交互产生一个线程,就算是百度或者360全家桶,16个线程也已足够)。
参考文章
AndroidStudio实现AIDL
Android 进程间通信的几种实现方式
Android Binder 进程间通讯机制