20210401 福州,潮湿,android 规整
【提供优先级】
※AndroidManifest.xml中配置persistent属性
限制:程序必须是系统程序,即其安装目录为/system/apk/目录下才会有效。安装后路径为 /data/apk/目录下即使设置了该属性也不会有效果。
※提高service优先级,开启前台通知栏
※与NotificationManager交互,让进程变成可感知进程
限制:后台运行时对用户会有感知。在8.0以上也会受一定限制,锁屏后会被杀
※发送/接收广播,别让自己变成空进程
限制:只是稍微提高被杀的几率
※监听锁屏广播开启“1像素”Activity提升优先级
限制:锁屏熄屏一定时间后会被干掉,不起作用
※后台循环播放无声音频
限制:Android7.0以下适用,且一直播放音频费电损害用户的利益
========================================================================================
【应用拉活方案】
※利用系统广播拉活
应用:监听全局静态广播:比如时间更新的广播、开机广播、解锁屏、网络状态、亮屏暗屏解锁等
限制:已经不适用,Android8.0上隐式广播限制,只能动态注册,即要程序运行才能监听到这些广播。
※利用第三方应用广播拉活
推送互相唤醒复活:极光、友盟、以及各大厂商的推送
同派系APP广播互相唤醒:比如今日头条系、阿里系
保活互助联盟
限制:
1)要集成他们的sdk或加入联盟,互相拉活。
2)反编译分析top应用软件寻找外发的广播,后续版本该广播随时可能被移除或改为不外发
※利用系统Service机制拉活
将 Service 设置为 START_STICKY,利用系统机制在 Service 挂掉后自动拉活
限制:
1)service异常杀死后重启时间线性增长(5s,10s,……),达5次后将不再拉取
2)通过 Root 权限的管理工具或系统工具通过 forestop 停止掉的,无法重启(国内主流手机厂商均采用forestop这种方式)
※利用Native进程拉活
利用 Linux 中的 fork 机制创建 Native 进程,在 Native 进程中监控主进程的存活,当主进程挂掉后,在 Native 进程中立即对主进程进行拉活。
限制:5.0起系统回收策略改成进程组。 高版本上黑科技也是采用这种方式的演变,这是一个相互博弈的过程,旧版本可用下一个版本可能就被修复,技术要求高。
※利用定时器、JobScheduler 机制拉活
系统满足一定条件时会触发执行某项的任务
限制:Android6.0以下可用,7.0上有一定影响(在电源管理中授权)。在7以上版本一键清理后就无法重启
※利用账号同步机制拉活
Android 系统的账号同步机制会定期同步账号进行,该方案目的在于利用同步机制进行进程的拉活。添加账号和设置同步周期 AccountManager 实现方法就是SyncAdapter ,利用系统的Account进行回调,启动Service 执行Sync操作。该方案需要在 AndroidManifest 中定义账号授权与同步服务。
限制:适用8.0以下对这部分未阉割的系统,8以上已修复
※其他拉活方案
利用辅助功能拉活,将应用加入厂商或管理软件白名单。
限制:
1)花钱与厂商合作。
2)编写FAQ文档引导用户加白,系统的加白名单设置功能,不同机型和版本适配复杂。