安卓开启多进程方式
1,安卓开启多进程的方式: 在manifest文件中给Activity 配置 android:process="" 属性 引号内接进程名。
如上图,这两个activity运行在不同的进程中。没有指定process属性的,运行在默认进程中,进程名是包名。
ThirdActivity中的process属性中的“:”表示前面附加程序包名。并且是私有进程,其他应用的组件不能通过shareUID方式和它跑在同一个进程中。而进程名不以“:”开头的属于全局进程,其他应用可以通过ShareUID方式与它跑在一个进程中。
一般来说,多进程会造成如下面几方面的问题:
- 静态成员和单例模式完全失效
- 线程同步机制完全失效
- SharePreference的可靠性下降。
- Application会被多次创建
在操作系统中,线程是CPU调度的最小单元,而进程是一个执行单元,一个进程可以包含单个或者多个线程。回到安卓中,每一个应用一般就是一个进程,都有一个独立的虚拟机,不同的虚拟机在内存分配上有不同的地址空间,所以多进程就有多个虚拟机(类似应用多开),也就是说一旦你的应用开启了多进程,其实想当于开启了多个应用,于是Application就会被多次创建,既然是多个应用,每个应用里面的对象都不关联的,所以静态成员和单例模式失效,既然对象是独立的,那么锁也是独立的,所以线程同步机制失效。