Android中Service被杀时自动重启的方法
来源:互联网 发布:做彩票网络销售经历 编辑:程序博客网 时间:2024/05/16 23:59
1、在Service中重写onStartCommand()方法,并返回START_STICKY;或者将该方法中的flags置为START_STICKY:
@Overridepublic int onStartCommand(Intent intent, int flags, int startId) {return START_STICKY;}@Overridepublic int onStartCommand(Intent intent, int flags, int startId) {// TODO Auto-generated method stubLog.v("TrafficService","startCommand");flags = START_STICKY;return super.onStartCommand(intent, flags, startId);}
2、在Service的onDestroy()方法中重启Service:
public void onDestroy() { Intent localIntent = new Intent();localIntent.setClass(this, MyService.class); //销毁时重新启动Servicethis.startService(localIntent);}
3、如何实现一个不会被杀死的进程
看Android的文档知道,当进程长期不活动,或系统需要资源时,会自动清理门户,杀死一些Service,和不可见的Activity等所在的进程。但是如果某个进程不想被杀死(如数据缓存进程,或状态监控进程,或远程服务进程),则应该在AndroidManifest.xml文件的<application>中添加:
android:persistent="true"
切记,这个不可滥用,系统中用这个的service,app一多,整个系统就完蛋了。
目前系统中有phone等非常有限的、必须一直活着的应用在试用。
4、提升service优先级的方法
Android系统对于内存管理有自己的一套方法,为了保障系统有序稳定的运信,系统内部会自动分配,控制程序的内存使用。当系统觉得当前的资源非常有限的时候,为了保证一些优先级高的程序能运行,就会杀掉一些他认为不重要的程序或者服务来释放内存。这样就能保证真正对用户有用的程序仍然再运行。如果你的Service碰上了这种情况,多半会先被杀掉。但如果你增加Service的优先级就能让他多留一会,我们可以用setForeground(true)来设置Service的优先级。
为什么是foreground?默认启动的Service是被标记为background,当前运行的Activity一般被标记为foreground,也就是说你给Service设置了foreground那么他就和正在运行的Activity类似优先级得到了一定的提高。当然这并不能保证你得Service永远不被杀掉,只是提高了它的优先级。
从Android 1.5开始,一个已启动的service可以调用startForeground(int, Notification)将service置为foreground状态,调用stopForeground(boolean)将service置为background状态。
我们会在调用startForeground(int, Notification)传入参数notification,它会在状态栏里显示正在进行的foreground service。background service不会在状态栏里显示。
5、如何防止Android应用中的Service被系统回?
对于Service被系统回收,一般做法是通过提高优先级来解决:在AndroidManifest.xml文件中在intent-filter中通过android:priority = "1000"这个属性设置最高优先级(1000是最高值,数字越小则优先级越低,同时适用于广播)。
原文链接:http://www.cnblogs.com/ylligang/articles/2665181.html
- Android中Service被杀时自动重启的方法
- Android service被杀后自动重启
- Android 开发之Service 探索如何保证Service不被杀死或被kill之后自动重启
- Android 开发之Service 探索如何保证Service不被杀死或被kill之后自动重启
- Android 被杀掉的Service进程自动恢复?
- 如何禁止被杀掉的service重启
- android避免service被杀 博客分类: android 1.在service中重写下面的方法,这个方法有三个返回值, START_STICKY是service被kill掉后自动重写创建
- android 后台service 不被杀死的几种方法
- android--Service自动重启而不被kill掉的一些方法
- android--Service自动重启而不被kill掉的一些方法
- Android中Service中是否能做耗时操作,两种启动模式与服务不被杀死的方法
- 如何提高Service的优先级避免被杀死或者杀死后如何再次重启Service?
- 关于Android中Service的手动、自动以及其在特殊条件下的重启
- Android Service 优先级避免被杀死或者杀死后如何再次重启
- service中onStartCommand方法return介绍和如何创建不被杀死的service
- android的service组件不被杀死
- Android 不被杀死的Service
- Android 服务Service自动重启研究
- gvim配置及相关插件安装(过程详细,附图)
- 关于connect: network is unreachable 问题的解决
- 在HTML 中加视频
- CentOS 6.3 64bit安装KVM总结
- 阿里巴巴2013笔试题
- Android中Service被杀时自动重启的方法
- 关于connect: network is unreachable 问题的解决
- 面试题收藏
- EL表达式从request和session中取值 .
- Java-Swing-计算器
- HTTP协议
- 删数问题
- Java-MD5加密程序
- iOS library Other Linker Flags