Android中android_process多进程的坑
来源:互联网 发布:windows toolkit 编辑:程序博客网 时间:2024/06/17 01:45
在Android的帮助文档中我们可以了解到,一般情况下一个服务没有自己独立的进程,它一般是作为一个线程运行于它所在的应用的进程中。但是也有例外,Android声明文件中的android:process属性却可以为任意组件包括应用指定进程,换句话说,通过在声明文件中设置android:process属性,我们可以让组件(例如Activity, Service等)和应用(Application)创建并运行于我们指定的进程中。
好处:
1.给进程分配了独立的内存,避免了OOM。
2.分担主进程的内存压力。
坏处:
1.多进程开启时,Appliaction的onCreate方法被执行多次,导致重复初始化资源,增加了初始化时间,Android为每个进程分配了独立的虚拟机,所以我们不能直接将一些数据保存在Application中。
2.进程间的内存相互间是不可见的,不能用常规方法来共享数据库。
3.静态成员和单例模式完全失效(不是同一块内存,会产生不同的副本)
4.线程同步机制完全失效(不是同一块内存,所以对象也不是同一个,因此类锁、对象锁也不是同一个,不能保证线程同步)
5.SharedPreferences 可靠性下降(SharedPreferences不支持多个进程同时写,会有一定的几率丢失数据)
6.如果在新进程中要进行Umeng统计或分享等类似的第三方操作,需要重新初始化,并且分享很容易出现问题。
总结:
1.对于一些大图显示,详情页可以使用多进程来避免OOM,但是要尽量避免数据库操作和引用单例。
2.如果要操作SharedPreferences,可使用如下方式来创建,不过SharedPreferences不是线程安全的,所以使用要慎重。
SharedPreferences s = getApplicationContext().getSharedPreferences("UserData",Context.MODE_MULTI_PROCESS);3.多线程间的数据共享,可以通过AIDL,Messenger或者ContentProvider来实现。可以参考
http://www.open-open.com/lib/view/open1473735422932.html
http://www.cnblogs.com/android-blogs/p/5816922.html
4.在新进程中,尽量减少单例、SharedPreferences以及第三方分享等操作。
1 0
- Android中android_process多进程的坑
- android中开启多进程的问题
- Android开发中怎样用多进程、用多进程的好处、多进程的缺陷、解决方法
- Android开发中怎样用多进程、用多进程的好处、多进程的缺陷、解决方法
- Android中进程的生命周期
- Android中进程的优先级
- Android中进程的级别
- Android中使用多进程的应用程序注意
- android 多进程下的坑
- Android中线程与进程的理解
- Android中线程与进程的理解
- Android中进程的生命周期是什么?
- android中杀死进程的方法
- Android中组件与进程的剥离
- Android中线程与进程的理解
- android中杀死进程的方法
- Android中installd进程存在的意义
- android中进程和线程的概述
- 对象与对象之间的关系
- 解决net.sf.json.JSONException: There is a cycle in the hierarchy!
- 图像修复常用方法
- 配置绿色版的editplus
- 博弈论之sg函数
- Android中android_process多进程的坑
- 阿里云80端口被占用怎么办?
- java 权限控制
- css对元素使用background-image的时候的注意点
- php模拟登陆
- java 下拉多级联动 头像裁剪 调用摄像头 SpringMVC mybatis SSM
- BZOJ1717——[Usaco2006 Dec]Milk Patterns 产奶的模式
- Js学习笔记-事件冒泡、事件捕获、阻止默认行为
- Server Tomcat Server at localhost failed to start解决方案