android中的多进程模式(IPC)

1,可能遇到的多进程情况

①应用由于某些原因需要通过多进程来实现。
比如应用所需的内存太小,多进程可以获得更大的内存空间。(android对单个应用的大小做了限制,不同的手机限制的大小不一样。)
如果应用有些模块必须要单独运行在一个进程中。
②当前应用需要向其他应用请求数据,则必须跨进程来获取数据。

2,怎么开启多进程模式

四大组件,都可以通过设置”android:process”属性来开启多进程模式。

3,android:process

android:process=":romote"
android:process="asule.hope.romote"

如果没有为四大组件指定android:process值,那么它是运行在默认的进程中,而默认的进程的名字是应用的包名。
上面列举了android:process的两种写法。
前面那个以”:”开头的那个进程属于私有进程,它的全名还要附加上包名。后面的则是以完整的名字来命名,该进程称为全局进程
其中私有进程,其他应用的组件不可以和它在一个进程里运行。
而全局进程,其他应用可以通过共享UID的方式和它在一个进程中运行。

UID,在windows中UID表示是用户的id,它的作用?比如什么软件我们有权限,什么操作我们可以做等。而在android中,由于是单用户系统,UID表示的是应用的id。每个应用,系统都为其分配了不同的id。
共享UID的意思是两个应用使用一样的id。通过共享UID在一个进程运行还有一个前提是应用的签名要一致。满足这两个条件,多个应用可以在同一个进程中运行。这种情况下,数据共享便更不是问题。

4,多进程模式带来的问题

多进程的出现造成的问题:

①静态变量和单例模式

某个类中的静态变量,在A进程中被修改,被赋值。而在B进程中继续使用该值时,发现依旧是默认值。不同的进程,会运行在独立的不同的虚拟机中,它们访问类时,都会创建对象的副本。

②线程同步

线程同步要求的是多个进程使用同一个锁,要么是同一个对象,要么是同一个类。
而多进程,线程同步时,必然就不会是同一个锁。

③SharePreference
每一个进程的SharePreference都是一个单独的实例,多个进程不能共享SharePreference的数据。可以设置它的MODE为Context.MODE_MULTI_PROCESS,来实现多进程的SharePreference的数据共享,但是多进程并发的执行读写操作,可能会导致一些BUG。

④Application
运行在不同进程的组件,拥有独立的虚拟机,Application,内存空间。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值