Android初级第八讲之应用如何保活

本文详细介绍了Android应用保活的各种策略,包括提升进程优先级、进程死后拉活等方法。通过设置前台Service、利用通知、系统广播、Native进程等方式,尽可能避免应用被系统或第三方管理工具杀死。此外,还探讨了不同Android版本下的保活方案,如JobScheduler、账号同步等,以及在无Root环境下的应对策略。
摘要由CSDN通过智能技术生成

 本文来自刘兆贤的博客_CSDN博客-Java高级,Android旅行,Android基础领域博主 ,引用必须注明出处!

一般情况下应用保活的场景在于:后台要不断定位描述一条清晰轨迹、IM通信需要及时收到消息提醒等。

所谓保活就是避免被应用杀死,前台应用自然不用说,主要是后台应用。我们知道Android的应用优先级是-16到15,系统进程一般拥有-16到-1的优先级,而普通应用只拥有0-15的优先级;级别越小优先级越高。

首先进入后台的应用不能是流氓进程,比如频率的定位、发送网络请求、不允许屏幕关闭等;如果做心跳,需要选择合适的周期比如2分钟一次,进行socket长连;可以设计一个前台进程一个后台进程,互相监测重启对方;保持至少有1像素位于前台。

其次如果强制保活,那么90%的可能会杀死进程;4.4以前可以用AlarmManager的setRepeating方法可定时保活,之后可以使用setAndAllWhileIdle方法在保持在一段时间内集体唤醒;

再者可以通过注册通知,比如开机启动、时间变动、锁屏解屏、网络开关、收到短信、打入电话等;5.0以后可以使用JobSchedule的Api进行轮循操作,通过主动注册网络切换广播来监听(配置文件注册方式已被禁止)

如果是Service还可以通过startForeGround的方式来让服务处于前台,避免杀死,关闭时使用stopForeGround来去掉。另外在重写onStartCommand,返回START_STICKY,使service被杀死后自动重启

public int onStartCommand(Intent intent, int flags, int startId) {        

return START_STICKY;    

}

还有通过WakeLock,需要申请到权限

 获取锁:

  1. WakeLock mWakeLock=null;  
  2. PowerManager pm = (PowerManager) getSystemService(Context.POWER_SERVICE);  
  3. /** 
  4.  * PowerManager.PARTIAL_WAKE_LOCK:保持CPU运转,屏幕和键盘灯可能是关闭的 
  5.  * PowerManager.SCREEN_DIM_WAKE_LOCK:保持CPU运转,运行屏幕显示但是屏幕有可能是灰的,允许关闭键盘灯 
  6.  * PowerManager.SCREEN_BRIGHT_WAKE_LOCK:保持CPU运转,屏幕高亮显示,允许关闭键盘灯 
  7.  * PowerManager.FULL_WAKE_LOCK:保持CPU运转,屏幕高亮显示,键盘灯高亮显示 
  8.  * PowerManager.ON_AFTER_RELEASE:当锁被释放时,保持屏幕亮起一段时间 
  9.  * PowerManager.ACQUIRE_CAUSES_WAKEUP:强制屏幕亮起 
  10.  */  
  11. mWakeLock = pm.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, "SoundRecorder");  
  12. mKeyguardManager = (KeyguardManager) getSystemService(Context.KEYGUARD_SERVICE);  
  13. mWakeLock.acquire();  

          释放锁   

  1. if (mWakeLock.isHeld()) {  
  2.       mWakeLock.release();  
  3.   } 

如果是Root手机,可以设置应用的persistent标签为true。

终归这样的方式很流氓,就像张小龙对微信的期许一下:希望它是个人们有需要用一下,用完就放开的工具。

给Activity设置如下标签,当用户点击最近任务时,App不会显示在内,达到隐藏的目的

android:excludeFromRecents="true"

tips:另外针对线程做双重UncaughtExceptionHandler,有助于防止App直接挂掉。

附斑马行车对用户权限的要求(主要设置白名单)

恭喜你,看到最后发现新天地!无论如何,在保活的时候要考虑下用户的感受,理性保活!

其他如启动1像素的activity,Native进程保活,通知拉起保存Service、监听第三方和系统的公开广播

Android进程保活招数大全

目前市面上的应用,貌似除了微信和手Q都会比较

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

刘兆贤

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值