前言
Binder做为Android中核心机制,对于理解Android系统是必不可少的,相信看完这篇文章大家也可以搞懂binder机制。
1、Binder简介
先理解一个概念IPC:Inter-process communication ,进程间通信,已有的进程间通信如下几种:
1、Files 文件系统(包括内存映射)
2、Sockets
3、Pipes 管道
4、Intents, ContentProviders, Messenger
5、Binder
Android系统中的Binder框架图如下:
拿Activity举例从上图可以看出来:Activity是由ActivityManager来控制的,而ActivityManager其实是通过Binder获取ActivityManagerService服务来控制Activity的,并且ActivityManager是Android系统FrameWork层的,和应用中的activity不是同一个进程。
重点:
1、Binder是Android提供的一套进程间通信框架。
2、系统服务ActivityManagerService,LocationManagerService,等都是在单独进程中的,使用binder和应用进行通信。
2、Android系统框架
如上图,Android系统分成三层。最上层是application应用层,第二层是Framework层,第三层是native层。
由下图可知几点:
1、Android中的应用层和系统服务层不在同一个进程,系统服务在单独的进程中。
2、Android中不同应用属于不同的进程中。
Android应用和系统services运行在不同进程中是为了安全,稳定,以及内存管理的原因,但是应用和系统服务需要通信和分享数据。
优点
安全性:每个进程都单独运行的,可以保证应用层对系统层的隔离。
稳定性:如果某个进程崩溃了不会导致其他进程崩溃。
内存分配:如果某个进程以及不需要了可以从内存中移除,并且回收相应的内存。
3、Binder通信
client请求service服务,比如