Android进程管理
来源:互联网 发布:流行网络歌曲500首 编辑:程序博客网 时间:2024/05/20 05:07
进程管理的必要性
移动设备内存空间有限,目前2-4G的内存比较多,虽然已经很大了,但是一个应用进程占用200m,这样很快就会觉得手机卡爆了。再说用户能看到应用也只有一个前台进程,其他的进程占用的内存很多都是浪费了,这样就有必要对这部分浪费的空间进行管理,清除掉那些没用的。
多进程实现:
mainfest清单中配置process
<service android:process=":test1">
以冒号开头“:test1”是私有进程,仅能放置本应用组件,其他应用无法共享该进程空间;
<service android:process="com.honjane.test2">
以包名+类名的是进程是共享进程,可以承载来着不同应用的组件。
除了android:process熟悉,组件配置项的android:mutiprocess属性控制组件进程模型的重要手段。mutiprocess默认为false,
<provider android:mutiprocess="true" ...>
此时,应用就会将该组件嫁接出去,当任何一个第三方应用使用该组件时,都会在第三方应用中备份一份组件对象。而不再是运行在该进程所在进程内(不带来很大并发复杂性问题,开发中使用较少)
进程优先级:
优先级的高低,由进程中组件与用户的交互状态来决定,组件中与用户交互状态越紧密,进程优先级越高。
当前用户交互的界面组件,称为前台进程组件。占用资源最多,对开发者来说,不要让组件执行长时间执行onRevice,service.onstart等函数,让进程停留在前台状态。
可视进程,与用户没有直接交互操作,但是用户可以看见这些组件,直接影响着用户的体验。通常,系统不会回收这些可视组件所在的进程。
进程回收:
1、组件安装优先级高低,优先级低的先被回收
2、优先级相同,越近使用过得进程越后被回收
最要分两类进程 “性能型”和“体验型”
“性能型”最要包括后台进程,空进程与手机性能相关
首先,Android手机会计算性能型进程的最大接受值,当低于这个阀值,不会考虑回收
其次,当性能型进程超过这个阀值,系统尝试回收空进程,如果回收后还是超过这个值,就会考虑回收后台进程,一旦性能型进程低于这个值,回收结束。
不难看出“性能型”进程回收是以进程数量为依据的。这种回收方式粗粒度不够,对资源的控制不够精确,毕竟不同的进程消耗的资源不一样。只按照数量来回收,不够精细。
后台界面组件回收解决了这个问题,它是在进程内部完成的,不影响进程数量和优先级,只实现进程内局部资源的释放。
系统将后台组件按照最近访问时间排序,一旦后台组件超过一个阀值(默认20个),系统按照最近访问时间释放掉那些最老访问的组件。组件被回收前会调用
Activity.saveInstanceState()
讲界面的一些信息暂存到磁盘,然后释放掉该组件,知道低于预设的组件阀值。
当我们要恢复的时候可以在onCreate或者restoreInstanceState()中恢复保存的数据
优先级调整
掌控优先级是有必要的,比如播放音乐,我们不希望播放一段时间,进程被杀死了,音乐停止了。这时候就要提高后台进程的优先级。
1、设置service.startForeground方法,将服务组件与通知组件绑定到一起,给service打开一扇与用户交互的窗口。
2、控制Service.onStartCommend返回值,设置为START_STICKY,这样在进程被强制回收后,会再次调用onStartCommend恢复service,
……
市面上很多保活service方法,这里就不详细谈论了,有兴趣可以查询相关资料
- android 进程管理
- Android进程管理详解
- Android进程管理详解
- Android进程的管理
- android的进程管理
- Android进程内存管理
- android 自动管理进程
- Android进程管理
- Android之进程管理
- Android进程管理
- Android进程管理详解
- android中进程管理
- Android进程管理详解
- android进程内存管理
- Android进程管理详解
- Android进程管理(详解)
- Android中进程管理
- Android进程管理学习
- 05、css控制文本与字体
- 基于皮尔森相关系数的协同过滤算法
- PAT乙级练习题B1018.锤子剪子布
- 让HTML5, CSS3, Bootstrap3在虐心的IE8上爬模滚打
- 一个qt的例子说明QWaitCondition的作用(条件变量)
- Android进程管理
- MongoDB实用教程
- 网站常见漏洞攻防进阶
- 微信助手,模拟微信定位,自动添加好友,自动回复,自动发朋友圈
- virtualBox 为虚拟机网络设置桥接模式
- SQL1999语法+数据集合操作
- Linux内核网络系统中的设计模式
- 专题四 Problem K
- java中窗体的创建