1.概念
什么是IPC机制? IPC即 Inter-Process Communication ,进程间通信或跨进程通信,是指两个进程之间进行数据交互的过程。
什么是线程? 线程是CPU调度的最小单元,是一种有限的系统资源。
什么是进程? 进程指一个执行单元,在pc和移动设备上指一个程序或一个应用。
一个进程可以包含多个线程,一个进程中可以只有一个线程,即主线程。
主线程也叫UI线程,负责操作界面元素。耗时任务放在主线程会造成界面无法相应,即ANR(Application not reponding)。
2.为什么要用多进程?大体分2种情况:
第一种,一个应用由于某些原因自身需要采用多进程模式来实现,如有些模块需要单独运行在单独空间,或者为了加大获取内存空间而采取多进程获取多份空间。
第二种,当前应用需要向其他应用获取数据。
3. 使用多进程的缺点
(1)静态成员和单例模式完全失效
(2)线程同步机制完成失效
(3) SharePreferences的可靠性下降
(4) Application会多次创建
4.如何开启多进程
// 只能在AndroudManifest文件中为四大组件设置process属性。
<activity android:name=".activity.book.ProcessActivity" android:process=":remote"</activity>
startActivity(new Intent(MainActivity.this, ProcessActivity.class));
// 命令行查看进程id 以及进程名
adb shell ps | grep com.peng.expert
u0_a173 25350 635 4467092 134428 0 0 S com.peng.expert
u0_a173 25524 635 4458748 122060 0 0 S com.peng.expert:remote
注意,默认的进程名是包名,“:”是指默认前面是报名,后面自己指定内容。当然也可以自己指定具体进程名,android:process=“abcde:processX”。
ps: 开启多进程容易,但是我们要妥善处理多进程,否则通过使用多进程得到的好处,甚至不足以弥补使用多进程所带来的代码层面的负面影响。