本文为个人学习笔记分享,没有任何商业化行为,对其他文章的引用都会标记。如有侵权行为,请及时提醒更正!如需转载请表明出处
本文主要来源是 任玉刚大神的《Android开发艺术探索》
IPC 是 Inter-Process Communication 的缩写,含义为进程间通讯或者跨进程通信,是指两个进程之间进行数据交换的过程。说起进程通信,我们首先要理解什么是进程,什么是线程,进程和线程是截然不同的概念。
按照操作系统的描述,线程是CPU调度的最小单元,同时线程是一种有限的系统资源。而进程一般指一个执行单元,在PC和移动设备上指一个程序或者一个应用。一个进程可以包含多个线程,因此进程和线程是包含与被包含的关系。最简单的情况下,一个进程中可以只有一个线程,即主线程,在andorid里面主线程也叫UI线程,在线程里才能操作界面元素。很多时候,一个进程中需要执行大量耗时任务,如果这些任务放在主线程执行就会导致界面无法响应,严重影响用户体验,这种情况在PC系统和移动系统中都存在,在Android中有一个特殊的名字ANR(Application Not Responding),即应用无响应。解决这个问题就需要用到线程,把一些耗时的任务放在线程中即可。
IPC不是Android特有的,任何一个操作系统都需要有相应的IPC机制,比如Windows上可以通过剪切板、管道和油槽等来进行通信;Linux上可以通过命名管道、共享内存、信号量等来进行进程间通信。对于android来说,不完全继承Linux,相反,他有自己的进程通信方式。在Android中最有特色的进程通信方式就是Binder了,通过Binder可以轻松的实现进程通信。除了Binder外,Android还支持Socket,通过Socket也可以实现两个终端之间的通信,当然同一个设备上两个不同的进程之间也可以通过Socket。
为什么要采用多进程模式?
1.有些模块由于特殊的原因需要运行在单独的进程中。
2.通过多进程可以获取更多份的内存
3.当应用需要获取其他应用的数据。
4.ContentProvider、Service、甚至平时startActivity 都用到了跨进程通信。