码迷,mamicode.com
首页 > 移动开发 > 详细

【Android开发坑系列】如何让Service尽可能存活

时间:2015-09-06 19:55:23      阅读:218      评论:0      收藏:0      [点我收藏+]

标签:

流行的思路如下:

1.让Service杀不死。Service的onStartCommand返回START_STICKY,同时onDestroy里面调用startService启动自身。

2.让Service从后台变成前置。在Android 2.0以前有效,借助setForeground(true)。

3.让某个进程不被系统的low memory killer杀死(如数据缓存进程,或状态监控进程,或远程服务进程)。add android:persistent="true" into the <application> section in your AndroidManifest.xml 。切记,这个 不可滥用,系统中用这个的service,app一多,整个系统就完蛋了。 通过实验发现即使设置了这个属性,应用程序被force kill之后还是不能重新启动起来的,应该是只对low memory killer免疫。

4.提升Service优先级。在AndroidManifest.xml文件中对于intent-filter可以通过android:priority = "1000"这个属性设置最高优先级,避免Service被系统回收。

5.定时唤醒,通过AlarmManager。(在Android 4.0之前有效,4.0之后被强杀的APP无法唤醒 参考 http://www.android100.org/html/201305/06/2430.html)。

6.当应用升级之后,即使用户不点开APP,也要重启服务。因为升级APP时会发送ACTION_PACKAGE_RESTARTED,AlarmManager作为系统服务,会接受这个事件,然后startService。

7.让Service开机启动。不过现在很多手机会禁止开机启动。

8.守护进程。参考http://www.bubuko.com/infodetail-474019.html

【Android开发坑系列】如何让Service尽可能存活

标签:

原文地址:http://www.cnblogs.com/kaima/p/4786814.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!