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,内存空间。

更多相关文章

  1. Android读书笔记(2)—— IPC机制
  2. 【Android】【学习笔记】运行时资源替换-Runtime Resource Overl
  3. android 如何开始测试
  4. 【Android】Xposed 框架解析
  5. 已经有一半的 Android(安卓)手机在运行 2.1 系统了
  6. Android进程与线程基本知识二
  7. Android中如何打开或关闭GPS
  8. Android电话系统rild-概述篇
  9. 简单的android选项卡Tab菜单TabHost(一)同一Activity上实现

随机推荐

  1. Failure [INSTALL_FAILED_OLDER_SDK]
  2. Android(安卓)TextView控件
  3. ORMLite简介和增删改查方法的使用
  4. Android(安卓)Ble蓝牙开发内存泄漏
  5. 配置android模拟器加速(虚拟化加速)
  6. 10.Binder进阶:系统服务中的Binder
  7. Android(安卓)Jetpack 之 App Startup
  8. Android下Affinities和Task!!!!!!!!!!!!
  9. Android(安卓)小功能之 TextView 只设置
  10. Android(安卓)MVP架构