首页 > 其他 > 详细

防止应用被杀死

时间:2014-09-22 15:02:13      阅读:506      评论:0      收藏:0      [点我收藏+]

起因:

卡乐付项目中碰到一个问题:卡乐付调用系统拍照,拍照完后,无法返回---------卡乐付应用程序在拍照的时候被杀死。

 

原因:

手机在低内存的时候,系统会按照进程的优先级进行回收进程,来释放更多内存。这个时候,卡乐付被回收。(通过 logcat ActivityManager:v *:s命令可以看到哪些进程被杀死)

 

优化方案:

  1. 尽量减少程序的使用内存。
  2. 在程序里启动一个service,并且调用其startForground方法,来提高卡乐付的进程优先级,来尽量避免程序被杀死。

 

原理:

Android系统在低内存的时候,是采用lowmemorykiller来杀死优先级低的进程来回收内存。具体的策略是,根据当前系统可用内存,来获取可以可以杀死进程的级别,

然后从所有高于该级别的进程里,挑选占用内存最大的进程优先杀死。因此,就有如上的两种优化方案。

 

Android 进程优先级别如下:

1. 前台进程 Foreground process

2. 可见进程Visible process

3. 服务进程Service process  

4. 后台进程Background process  

5. 空进程Empty process 

 

其实startForground方法就是可以把卡乐付变为前台进程,从而达到提交进程优先级的作用,从而避免被杀死,其实qq也是这么做的。

具体你的进程优先级,可以通过“dumpsys meminfo”来查看。

 

参考资源

 

http://www.cnblogs.com/angeldevil/archive/2013/05/21/3090872.html

http://glblong.blog.51cto.com/3058613/1205265

http://developer.android.com/reference/android/app/Service.html#startForeground(int, android.app.Notification)

防止应用被杀死

原文:http://www.cnblogs.com/jiayonghua/p/3985999.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!