博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【Android开发坑系列】如何让Service尽可能存活
阅读量:7127 次
发布时间:2019-06-28

本文共 754 字,大约阅读时间需要 2 分钟。

流行的思路如下【2015-11-20更新】:

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无法唤醒 参考 )。

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

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

8.守护进程。

参考1: 
参考2:

转载地址:http://vthel.baihongyu.com/

你可能感兴趣的文章
Nginx 安装及调优
查看>>
hbase shell基本操作命令详解
查看>>
网络编程学习——数据链路访问
查看>>
CentOS6.2下搭建LVS(NAT)+Keepalived实现高性能高可用负载均衡服务
查看>>
Centos7下安装及配置PPTP ***
查看>>
oracle 配置监听器
查看>>
Red Hat 配置本地 yum源
查看>>
[翻译]CloudBees 设计原则
查看>>
MFS分布式文件系统的管理和使用维护(二)
查看>>
Spring实现AOP的几种方式详解
查看>>
海量数据处理专题(五)——堆
查看>>
我的友情链接
查看>>
Linux下双网卡双网关配置路由表
查看>>
Windows Server 2012 和 System Center 2012 SP1,Virtual Machine Manager 中启用的软件定义的网络...
查看>>
跟我学习dubbo-Dubbo管理控制台的安装(3)
查看>>
Divice eth0 dose not seem to be present ,delaying initalization解决办法
查看>>
02-03-linux根文件系统详解
查看>>
HTML5+JavaScript+CSS实现音乐播放器——难点二:自己设计一个控制音乐播放的控制器...
查看>>
Django数据库读取出下拉框的数据源
查看>>
程序员必须要掌握的十大经典算法
查看>>