如何让Service尽可能存活

如题所述

  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开机启动。不过现在很多手机会禁止开机启动。
温馨提示:内容为网友见解,仅供参考
无其他回答

如何让Service尽可能存活
1.让Service杀不死。Service的onStartCommand返回START_STICKY,同时onDestroy里面调用startService启动自身。2.让Service从后台变成前置。在Android 2.0以前有效,借助setForeground(true)。3.让某个进程不被系统的low memory killer杀死(如数据缓存进程,或状态监控进程,或远程服务进程)。add android:persi...

Service防杀死
前台进程 > 可见进程 > 服务进程 > 后台进程 > 空进程。所谓进程防杀死,就是做到进程尽量不被系统杀死,并不能保证100%存活,因为受到内存,手机厂商的限制等。上面提到进程优先级,优先级越高越不容易被杀死,所以要想防止进程被杀死,就要提高进程的优先级。QQ采取在锁屏的时候启动一个1个像素的Ac...

Service的保活机制
通过监听系统的一些广播,比如:手机开机、解锁屏、网络连接状态变更、应用状态改变等等,然后判断Service是否存活,若否则启动Service。【可行性】Android系统在3.1版本以后为了加强系统安全性和优化性能对系统广播进行了限制,应用监控手机开机、解锁屏、网络连接状态改变等有规律的系统广播在android3.1以后,首...

Android开发之怎样监听让Service不被杀死
重传Intent,保持与重启前一样通过startForeground将进程设置为前台进程,做前台服务,优先级和前台应用一个级别,除非在系统内存非常缺,否则此进程不会被kill双进程Service:让2个进程互相保护,其中一个Service被清理后,

03.app保活解决方案
service2绑定service1的逻辑同上 这样一来,基本上在一定程度上可以保证app常驻内存了,保险起见,我们再加一层保护,创建两个JobService 分别位于上边两个进程中(安卓5.0以上适用),开启一个轮巡任务不断的检查service存活情况,如果不在了,启动它,注意JobService需要权限 监听系统锁屏消息,在屏幕锁定...

Android 如何进行进程保活
要保持某个或多个前台进程存活 场景 1.某个进程中运行着一个 Service 且该 Service 是通过 startService()启动的,与用户看见的界面没有直接关联。 在内存不足以维持所有前台进程和可见进程同时运行的情况下,服务进程会被杀死 场景: 在用户按了"back"或者"home"后,程序本身看不到了,但是其实还在运行的程序, 比...

Android 初学者 关于app关闭service一直运行 求各位指点迷津
Android5.0之前可以用双守护进程 fork一个子进程来守护主进程 白名单,微信QQ等等之所以能够存活,是因为系统商给了腾讯白名单,你调用清理内存时,并没有真正的清理

怎么让 Android 程序一直后台运行,像 QQ 一样不被杀死
或者网络状态改变后需要进行的操作public class BootCompletedReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { }}4.执行操作,Intent intent = new Intent(context,Service.class); context.startService(intent); 这样即可开机,或者网络状态...

Android 7.0 和8.0 如何保活
通知--前台service 创建一个通知使自己成为前台service 测试结果:360一键清理和手机优化,不会把该service结束掉。对于后台保护:华为G730不结束service,魅族和华为TL00H都会结束service。通知栏的保活效果还是可以的,一般的应用要求基本能满足了。若有root权限:android:persistent="true",并放入system\/app...

DDos是什么?
三、从 DDoS 攻击下存活 那么当遭受 DDoS 攻击的时候要如何设法存活并继续提供正常服务呢?由先前的介绍可以知道,若黑客攻击规模远高于你的网络频宽、设备或主机所能处理的能力,其实是很难以抵抗攻击的,但仍然有一些方法可以减轻攻击所造成的影响。首先是调查攻击来源,由于黑客经由入侵机器进行攻击,...

相似回答