前语
咱们在做Android运用的时分都知道,有必要要有一套好的保活计划,这样运用的push抵达率高,运用的活跃度也就很高,咱们平时也能够发现许多运用咱们明明已经封闭了,可是仍是能够接纳到push音讯,或者ps查看进程仍是存在的。当然现在已经有许多计划在做这件事了,可是有一个问题便是像微信中及时承受音讯的运用假如体系把他强杀之后接纳不到音讯,用户也是要疯掉的,所以体系厂商会给出一个白名单有一些运用是不会强杀的。一
一、常见保活计划
1、监听播送: 监听大局的静态播送,比方时间更新的播送、开机播送、解锁屏、网络状况、解锁加锁亮屏暗屏(3.1版别),高版别需求运用开机后运转一次才干监听这些体系播送,目前此计划失效。能够替换思路,做APP发动后的保活(监听播送发动保活的前台服务)
2、定时器、JobScheduler: 假如运用被体系杀死,那么定时器则失效,此计划失效。JobService在5.0,5.1,6.0效果很大,7.0时分有必定影响(能够在电源办理中给APP授权)
3、双进程(NDK方法Fork子进程)、双Service看护: 高版别已失效,5.0起体系收回策略改成进程组。双Service计划也改成了运用被杀,任何后台Service无法正常状况运转
4、提高Service优先级: 只能必定程度上缓解Service被立马收回
二、保活
- 1、AIDL方法单进程、双进程方法保活Service
- 2、降低oom_adj的值:常驻告知栏(可经过发动别的一个服务封闭Notification,不对oom_adj值有影响)、运用”1像素“的Activity覆盖在getWindow()的view上、循环播放无声音频(黑科技,7.0下杀不掉)
- 3、监听锁屏播送:使Activity始终保持前台
- 4、运用自定义锁屏界面:覆盖了体系锁屏界面。
- 5、经过android:process特点来为Service创建一个进程
- 6、跳转到体系白名单界面让用户自己增加app进入白名单
三、保活的特殊出路
咱们知道现在许多运用都想敞开自发动权限,这样运用就能够保活很久了了,不过只需有了自发动权限之后运用首先是不会杀死,然后也能够重启,真的是完完全全的保活了,那么其实权限这个工作咱们肯定是做不了了,所以咱们能够想其他的计划,比方咱们能够引导用户去敞开,这个就要看产品怎样去很好的引导用户了,比方有一个提示说:敞开自发动能够更好的运用本运用此类音讯。这样有了自发动权限之后能够做许多工作了,可是不是所有的用户都乐意去敞开的,那么咱们怎样让咱们的运用保活呢,莫非真的没方法了吗?方法其实仍是有的:
当咱们点击体系菜单键出现体系多任务界面,然后点击清空内存,其实体系这时分会获取当时正在运转的程序,并且获取他们的页面截图用于展示,而关于正在当时运转的程序是不会强制杀死的,也便是TopActivity的程序是不会杀死的。那么咱们是否能够使用这一点来做呢?首先咱们能够监听体系的多任务菜单键,这个便是动态监听体系一个播送即可,然后咱们监听到之后就立马发动咱们自己的一个保活Activity这儿就叫做一像素Activity,可是这个Activity需求具备以下三点。
第一点: 由于一像素关于肉眼来看简直能够忽略,所以需求在这个Activity中设置大小:
第二点: 不能让这个Activity出现在多任务中,否则会被用户发现就恶心了,这儿能够在xml中设置一个特点即可:
第三点: 发动这个Activity速度要非常快,也便是要赶在体系获取正在运转的Task之前发动起来,否则就无效了,所以按照正常的体系发动Activity流程会很慢的,这儿用反射启Activity,这个技能在咱们能够去网上查查,这儿不多说了,这样发动的话确保在10ms之内完成,这样就能够赶在体系获取Task之前了:
第四点: 在发动之后要在必定时间内把一像素Activity封闭,否则最顶端的一像素Activity会夺取屏幕的触控焦点,用户点击清空内存就无效了,用户会癫狂的:
有了这四点,这个一像素Activity就能够让咱们的运用保活了:
当然这个可能有手机适配问题,咱们能够看代码进行项目的适配,这种方法还有一个最大的好处便是,咱们知道Android8.0之后体系不允许运用在后台静默发动一个服务了,假如要发动服务就要告知用户,让用户能够看到,否则就报错,咱们能够自行查找相关内容。
其实这关于用户来说是功德,这样对设备有好处,否则后台发动了一大堆服务在跑,耗电耗功能。假如用了这个一像素保活计划的话那么咱们没有发动一个服务,也就不会有这种限制了,同时也让咱们的运用保活了。
四、保活计划总结
好了到这儿咱们就把保活计划介绍完了,下面就来总结一下保活计划吧:
第一、首先是网上有许多各种保活计划主要是监听播送等,而现在许多运用采用了MarsDaemon框架计划,这个框架确实仍是有用的,关于某些指定手机。
第二、同时现在有一个叫做保活互助联盟,比方支付宝,微信,头条等都在里面,只需用户手机中安装了联盟成员的运用,只有有一个成员的运用活着就会把其他已经被杀死的联盟成员运用都唤醒起来。而咱们知道像微信这类即时通讯东西一遍许多手机厂商都会加上白名单也便是不会强杀的,那么假如咱们经过反编译微信找到他内部一个不需求权限播送,微信不死咱们监听他的某个播送就能够起来了,条件是你能找到这个播送。
第三、上面也说了,不管是哪种保活计划,终究的归途都是不好的,由于谷歌渐渐的优化体系关于后台发动服务的操作是不赞同的,所以后面跟着体系升级许多保活计划简直都要挂了,而本文介绍的特殊处理方法的一像素保活计划能够暂时处理这样的问题。