- 开启新进程只需在AndroidMenifest中为组件指定
android:process
属性。其次进程的命名是否以“:”开头影响到是私有进程还是全局进程,当两个应用ShareUID与签名相同时,则可以运行在同一全局进程。 - Android为每一个应用分配独立的虚拟机,即在内存上的地址空间并不相同。因此同一个类会有不同的副本,即使静态变量在一个进程中被修改,也不会影响到其他进程。
这样就会出现一个显而易见的问题:组件在多进程下通过内存共享数据会失败。
具体来说有以下几个情况:
(1)静态成员和单例模式失效
(2)线程同步机制失效
(3)SP不支持并发读写,多进程同时执行造成可靠性下降
(4)Application多次创建,即系统创建进程并分配虚拟机的过程多次执行
基于多进程模型产生的这些问题其实系统已经提供了很多的跨进程通信方法,就是所说的IPC
参考资料:
《Android开发艺术探索》任玉刚
网友评论