多进程的一些注意事项

Posted TwoFish

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了多进程的一些注意事项相关的知识,希望对你有一定的参考价值。

1.如何开启:

给四大组件(Activity、Service、Receiver、ContentProvider)在androidManifest.xml中指定"android:process"属性可以在应用内实现多进程。

如果进程名以":"开头,说明该进程属于私有进程,其他应用的组件不可以和它跑在同一个进程中;

如果进程名不以":"开头,则属于全局进程,其它应用通过ShareUID方式可以和它跑在同一个进程中。

 

2.注意两个进程之间的数据:

Android为每个应用分配了一个独立的虚拟机,或者可以说每个进程都有一个独立的虚拟机,不同的虚拟机在内存分配上有不同的内存地址,这就导致不同的虚拟机访问同一个类的对象会产生多份副本。

所以,所有运行在不同进程中的四大组件,只要他们之间通过内存来共享数据,都会共享失败。

一般来说,使用多进程会有以下影响:

<1>.静态成员和单例模式完全失效

<2>.线程同步机制完全失效(因为都不是一块内存了,所以不同进程锁都不是同一个对象)

<3>.SharePreferences的可靠性下降(因为SharePreferences不支持两个进程同时进行写操作,会导致一定几率的数据丢失,这是因为SharePreferences底层是通过读写xml来实现的)

<4>.Application会多次创建

 

以上是关于多进程的一些注意事项的主要内容,如果未能解决你的问题,请参考以下文章

析构函数私有类方法;继承;环境部署;多线程多进程;锁

ADB命令查看App主进程和私有进程PID小记

什么是进程?和线程区别?

进程与线程---------共享与私有

关于js单线程(转载)

线程与进程&&线程私有资源