IPC是Inter-Process Communication的缩写,含义为进程间通信或者跨进程通信,是指两个进程间进行数据交换的过程。
什么是进程,进程和线程是截然不同的概念。按照操作系统中的描述,线程是cpu调度最小的单元,同时线程是一个有限的系统资源。而进程一般指一个执行单元,在pc和移动设备上指一个程序或者一个应用。一个进程可以包含多个线程。
最简单情况下,一个进程中可以只有一个线程,即主线程,安卓中为UI线程。
IPC不是安卓中所独有的,任何一个操作系统都需要有相应的IPC机制,比如windows上可以通过剪切板、管道和邮槽等来进行进程间通信;Linux上可以通过命名管道,共享内容、信号量等来进行进程间通信。
Android中最有特色的进程间通信方式,就是Binder。除了Binder,Android还支持Socket,通过Socket也可以实现任意两个终端之间的通信,当然同一个设备上的两个进程通过Socket通信也自然是可以的。
Android中的多进程模式。通过给四大组件指定android:process属性,开启多进程模式。
微信小程序的Activity,就是指定一个多进程Activity。
一般来说,多进程会造成一下几个方面问题:
(1)静态成员和单例模式完全失效;
(2)线程同步机制完全失效;
(3)SharedPreferences的可靠性下降;
(4)Application会多次创建。