Android 多进程的利弊分析
多进程的使用方法:
android多进程概念:一般情况下,一个应用程序就是一个进程,这个进程名称就是应用程序包名。我们知道进程是分配资源和调度的基本单位,所以每个进程都有自己独立的资源和内存空间,别的进程是不能任意访问其他进程的内存和资源的。
如何让自己的应用拥有多个进程:
四大在androidmanifest文件中注册的时候,有个属性android:process这里可以指定组件的所处的进程。
默认就是应用的主进程。指定为别的进程之后,系统在启动这个组件的时候,就先创建(如果还没创建的话)这个进程,然后再创建该组件。打印出它的进程名称:重载application类的oncreate方法即可。
设置android:process属性,要注意:如果是android:process=”:deamon”,以:开头的名字,表示这是一个应用程序的私有进程,否则它是一个全局进程。私有进程的进程名称是会在冒号前自动加上包名,而全局进程则不会。一般我们都是有私有进程,很少使用全局进程。
多进程app的优点:
首先,多一个或多个进程android应用的可用内存可以成倍的增加,多余一些消耗内存的应用来说是比较好的解决方案,例如图片视频处理,安全扫描等等;
其次,多个进程应用在被系统low memory killer终止时,可以尽量让应用的某个进程能存活;
最后,多进程的应用可以尽量做到一定程度的互相保活。
多进程app的缺点:
问题一:多进程的应用初始化是同一个入口,需要根据进程判断和区分初始化动作。难度系数:★
问题二:进程间通讯的复杂度要大于线程间通讯,当然手段有很多可以解决。aidl和broadcast都可以解决这个问题,但是到遇到传递大数据时你会发现基于binder的这两种实现方式也会遇到问题。难度系数:★★
问题三:进程间数据访问不同步,受限于sqlite和sharedpreference的功能,多进程对于这两个存储介质的访问会导致数据不同步的问题产生。如果用到webview你会发现cookiemanager对于cookie的管理在多进程内也会存在问题。难度系数:★★★