android 创建多个进程,android中的多进程模式

进程间内存相互隔离的。 在实际的开发过程中,可能需要把某些组件放在单独进程中去运行。

工作中你使用过多进程模式么?最常见的多进程模式是开启推送服务进程。

开启多进程模式

Android中的多进程模式,通过在配置清单中给四大组件设置android:process属性值,这样我们就可以轻易开启多进程模式。

这种方式开启的多进程指的是一个应用中存在多个进程的情况,进程间可共享私有数据(如data目录、组件信息等),但不能共享内存。

不同应用之间的多进程模式,进程之间不能共享私有数据,也不能共享内存。

另一种非常规的多进程方法,通过JNI在native层去fork一个新的进程,但是这种方法属于特殊情况,也不是常用的创建多进程的方式,因此我们不考虑这种方式(其实我不会)。

我们无法给一个线程或实体类指定其运行时所在的进程。

下面我们来看一下示例:

android:name=".main.TestActivity"

android:process=":test_activity"/>

android:name=".TestService"

android:process=":test_service"/>

android:name=".TestContentProvider"

android:process=":test_content_provider"/>

android:name=".TestBroadReceiver"

android:process=":test_broad_receiver"/>

当启动TestActivity时,系统会为它创建一个单独的进程,进程名为"包名:test_activity"。默认进程名是包名。

查看进程shell命令

adb shell ps | gres 包名   ##可查看到一个包名的所有进程

adb shell ps ##查看系统中的所有进程

应用的私有进程,以":"开始命名的进程属于应用的私有进程。其他应用组件不可以和它跑在同一个进程中。

全局进程,不以":"开始命名的进程属于全局进程,其他应用的组件通过ShareUID方式可以和它跑在同一个进程中。

无论私有进程还是全局进程,系统都会为其创建一个虚拟机来运行进程。Android为每一个应用分配了一个独立的虚拟机,或者说为每个进程都分配了一个独立的虚拟机,不同的虚拟机在分配上有不同的内存空间。

多进程的优势:

1 不被轻易kill掉,如推送服务在自己的进程中运行,按返回键退出程序,推送服务还后台的自己进程中运行。

2 系统分配给一个进程的内存大小是固定的,如果你的程序特别消耗内存,那么就开启多进程模式来增加内存。

3 把程序中的某些组件放在单独进程中运行。

一般来说,使用多进程会造成如下方面问题:

1 静态成员和单利模式完全失效。

2 线程同步机制完全失效。

3 SharedPreferences的可靠性下降。//SharedPreferences不支持多个进程同时读/写操作

4 Application会多次创建。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值