Android中开启多进程模式
2018-02-23 22:18
288 查看
在Android中为四大组件开启多进程模式,只有一种方法,那就是在AndroidMenifest中指定android:process属性。
如果没有指定,就是默认进程,默认进程名是包名,若指定android:process属性,那么“:xxx”表示在默认进程名后加入当前包名,但是这也代表该进程属于当前应用私有进程,其他应用组件不允许和它在同一个进程中。
使用多进程会造成如下几个方面问题:
(1)静态成员变量和单例模式失效
(2)线程同步机制失效
(3)SharePreferences可靠性下降
(4)Application多次创建
原因解析:由于Android为每一个应用分配一个虚拟机,其实也是为每一个进程分配一个独立的虚拟机,不同的虚拟机在内存分配上有不同的地址空间,这就导致在不同的虚拟机中访问同一个类对象会产生不同的副本,因此造成(1)问题出现;问题(2)本质上和(1)的原因是一样的,不是同一个内存地址空间,不管是锁对象还是锁全局都无法保证线程同步,因为不同进程锁的不是同一个对象了。问题(3)是因为SharePreferences不支持并发,否则会造成一定几率的数据丢失。问题(4)由于运行在同一个进程中的组件是属于同一个虚拟机和同一个application,因此运行在不同的进程中就属于不同的application的。
如果没有指定,就是默认进程,默认进程名是包名,若指定android:process属性,那么“:xxx”表示在默认进程名后加入当前包名,但是这也代表该进程属于当前应用私有进程,其他应用组件不允许和它在同一个进程中。
使用多进程会造成如下几个方面问题:
(1)静态成员变量和单例模式失效
(2)线程同步机制失效
(3)SharePreferences可靠性下降
(4)Application多次创建
原因解析:由于Android为每一个应用分配一个虚拟机,其实也是为每一个进程分配一个独立的虚拟机,不同的虚拟机在内存分配上有不同的地址空间,这就导致在不同的虚拟机中访问同一个类对象会产生不同的副本,因此造成(1)问题出现;问题(2)本质上和(1)的原因是一样的,不是同一个内存地址空间,不管是锁对象还是锁全局都无法保证线程同步,因为不同进程锁的不是同一个对象了。问题(3)是因为SharePreferences不支持并发,否则会造成一定几率的数据丢失。问题(4)由于运行在同一个进程中的组件是属于同一个虚拟机和同一个application,因此运行在不同的进程中就属于不同的application的。
相关文章推荐
- PID,UID,ShareUID以及Android开启多进程模式
- Android IPC机制之开启多进程模式
- Android Secret Dial Codes List 安卓各种工程模式开启密码
- Android IPC简介之(多进程模式)初识
- Android四大组件——Activity生命周期、启动模式、显隐式意图、杀死进程、杀死所有Activity、安装及反编译
- 6.Android中的多进程模式
- 开启 Android WebView 的安全浏览模式
- Android手机开启开发者模式
- Android多进程模式
- Android init进程中鲜为人知的charger mode 模式 .
- Android init进程中鲜为人知的charger mode 模式
- 《Android开发艺术探索》读书笔记----第二章:Android IPC 简介、多进程模式
- Android 开启gps, 数据流量, 飞行模式.
- Android之如何判断定位是否开启及定位模式
- Android多进程模式
- Android init进程中的 charger mode 模式
- Android init进程中鲜为人知的charger mode 模式
- Android IPC机制—跨进程的观察者模式
- Android IPC -- 初期(实现多进程模式)
- 小米4 android6.01的开发者模式开启方法