2024 Android保活总结

本文介绍的方案都是无需用户主动开启权限的。如果需要用户主动开启权限或者加白名单之类的话保活的意义就不大了,毕竟用户不大可能主动原因让app一直在后台运行

常规的方案

OnePixelActivity

1,监听SCREEN_OFF启动一个像素的Activity,灭屏的时候用户看不到这个界面,目的降低App的oom_dj值。

2,务必监听SCREEN_ON的时候关闭一个像素activity 要不然就会出现用户打开手机点击屏幕没反应。用户会抓狂的

前台服务

启动一个前台服务在状态栏有个通知。目的降低App的oom_dj值

Accout同步

利用账号同步服务拉起应用。并不能阻止force-stop干掉进程

用法参考:https://cloud.tencent.com/developer/article/2248389

无声音乐

app内置一个没有声音的音频到res/raw/下面,然后通过mediaplayer一直循环播放 目的是一键清理不会清理。效果可以但是并不能阻止force-stop干掉进程

监听系统广播

监听一堆系统发出的广播。目的是可以拉活应用。实测基本没啥用

防止休眠和断网

灭屏的情况下防止app休眠和断网 (实测有些效果但是并不能保活)

复制代码
                    try {
                        var powerManager =
                            context.getSystemService(Context.POWER_SERVICE) as? PowerManager
                        val wakeLock =
                            powerManager?.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, "WakeLock")
                        wakeLock?.acquire()

                        val wifiLock =
                            context.applicationContext.getSystemService(Context.WIFI_SERVICE) as? WifiManager
                        var wifiInfo = wifiLock?.createWifiLock(
                            WifiManager.WIFI_MODE_FULL_HIGH_PERF,
                            "MyWifiLockTag"
                        )
                        wifiInfo?.acquire()
                    } catch (e: Exception) {

                    }

workmanager jobservice

这两个可以开启轮询的定时任务。实测对保活效果不明显

Alarmmanager

开启精确的轮询任务,比较耗电 实测保活效果一般 休眠后任务会被挂起

利用Native进程拉活

持有不同进程的文件锁 如果某个进程被kill在jni里面出发Instrumentation拉活应用(9.0以下部分机型有效)

利用系统Service机制拉活

将 Service 设置为 START_STICKY,利用系统机制在 Service 挂掉后自动拉活 (几乎没啥用)

双service

启动两个service且互相绑定 其中一个进程挂了另外一个可以强行拉活(8.0以后几乎没用)

通过接入push

实测firebase 的push的确是能拉活进程 但是应用被force-stop后就无能为力了。可以接入热门应用常用的push 这样其他应用被打开后有机会把你的应用也拉活

可以通过app之间相互拉活

这个不用介绍了把

在最近任务中隐藏app

可以减少用户注定杀死app的机会

android:excludeFromRecents="true"

非常规策略

为了防止被滥用 暂不开源

相关推荐
驰骋工作流6 小时前
流程时效考核的表结构:从待办时限到 WF_CH 考核结果驰骋BPM驰骋低代码低代码工作流引擎
android·低代码·rxjava
传奇开心果编程8 小时前
【Flutter踩坑排雷】第7课:巨型 build 函数坑|全部 UI 写在同一个 build,维护难、隐性异常
android·flutter·ios·移动开发·跨平台·dart·声明式ui
方白羽11 小时前
Android 双开环境底层剖析与风控检测落地
android·安全·app
weixin_5633714712 小时前
Android Studio 2024 版 Device Explorer 打开方法
android·ide·android studio
AIsoft_868915 小时前
职场音频文件怎么整理?录音APP有哪些用法
android·音视频
booboosui15 小时前
第一批个人 Agent 用户正在卸载,问题不在模型,在它住在哪儿
android
洞见前行15 小时前
点击图标到内容出现,你的 App 在这几秒里做了什么:Android 冷启动全链路优化实战
android·性能优化·android studio
凯基迪科技15 小时前
芯片UID绑定修改 加密与逆向修改思路分析
android
Liben16 小时前
Weex开发踩坑记录
android·前端·ios
救救孩子把18 小时前
结构化输出为何“格式正确、答案错误”?JSON Schema 的能力边界
android·java·json·agent·agent服务