IPC的概念
IPC: Inter Process Communication,进程间通信。
短程通信: 一般而言,应用程序的组件都是在一个进程内部里执行,这种在同一进程内的通信就称为短程通信。
远程通信: 两个组件分别在不同的进程里执行,这种不同进程间组件的通信方式就被称为远程通信。
IPC通信的效率
1. 当我们启动某一个应用程序的时候,系统的Zygote服务就会孵化一个新的进程给它,然后将这个新启动的应用加载到这个进程里面。
2. 基于Linux的安全限制,以及进程的基本特性(例如,不同的进程之间,地址空间是相对独立的),如果两个类在一个进程里执行,则两者沟通方便也快速。
3. 但是如果两者在不同的进程里时,两者的沟通就属于IPC通信,效率和速度都不如进程内方便。
Android的进程概念
1. 一个进程是一个独立的执行空间,不会被执行在其他进程里的程序所侵犯。这种机制是Android的重要安全机制,所以需要先了解进程的内涵,才能进行IPC通信。
2. 在Android的进程里有一个虚拟机对象,可以执行Java代码,也可以引导本地JNI代码的执行,实现java和C/C++之间的沟通。
3. 每个进程在诞生时,都会诞生一个主线程,以及诞生一个Looper类的对象和一个MessageQueue数据结构。每当主线程做完事情,就回去执行Looper类,并不断观察MQ的动态。
设定IPC通信
1. 通常一个进程只会操作一个应用程序,但是,一个应用程序可以占用多个进程。通过设定组件的android:process属性可以实现这一点。