一个应用默认只有一个进程,这个进程的名字就是应用的包名,进程是系统分配资源和调度的基本单位,每个进程都要有自己的资源和空间,其它程序不能任意访问当前进程的空间,系统给每个进程分配的空间会有限制。
但是这都是默认情况下的事情,伟大的程序员是不会屈服一个进程的,我就弄出多个进程来玩玩;Android系统也是蛮大方的,你要多个,好,我来满足你,你可以指定一些组件运行在不同的进程中,只需指定组件的:
1 | android:process |
设置process属性的方式有两种:
- android:process=“:remote”,以冒号开头,冒号后边的字符是可以随意指定的。当然这只是一种缩写形式 大专栏 IPC机制,全称应该是:包名+“:remote";这种形式表示该进程为当前应用的私有进程,其它应用的组件不可以和它跑在同一个进程中。
- android:process=“xxx.xxx"表示运行在以这个名称的全局进程中,其它应用可以通过shareUID和他跑在同一个进程中;
虽然开启多进程是非常非常简单,但是有很多坑,一不小心就掉进去了:
- Application多次创建,启动多进程的生活,Application会被多次创建,在application中我们可以通过当前进程名字,来初始化数据,防止无必要的初始化
- 静态成员失效,各个进程是单独分配的内存,所以这里的静态成员变量将会失效
- 文件共享,多个进程同时访问一个文件时,可能造成文件损坏丢失等情况
- 断点调试的问题。调试就是跟踪程序运行过程中的堆栈信息,由于每个进程都有自己独立的内存空间和各自的堆栈,无法实现在不同的进程间调试
来源:https://www.cnblogs.com/liuzhongrong/p/12289277.html