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"

非常规策略

为了防止被滥用 暂不开源

相关推荐
2501_915918412 小时前
uni-app 项目 iOS 上架踩坑经验总结 从证书到审核的避坑指南
android·ios·小程序·https·uni-app·iphone·webview
游戏开发爱好者82 小时前
iOS 上架 uni-app 流程全解析,从打包到发布的完整实践
android·ios·小程序·https·uni-app·iphone·webview
雨白6 小时前
实现双向滑动的 ScalableImageView(上)
android
Y4090017 小时前
数据库基础知识——聚合函数、分组查询
android·数据库
没有了遇见12 小时前
Android 原生定位(替代高德 / 百度等三方定位)<终极版本>
android
2501_9160088913 小时前
iOS 抓包工具有哪些?全面盘点主流工具与功能对比分析
android·ios·小程序·https·uni-app·iphone·webview
2501_9159214313 小时前
iOS混淆工具实战 视频流媒体类 App 的版权与播放安全保护
android·ios·小程序·https·uni-app·iphone·webview
CYRUS_STUDIO13 小时前
LLVM 全面解析:NDK 为什么离不开它?如何亲手编译调试 clang
android·编译器·llvm
CYRUS_STUDIO13 小时前
静态分析神器 + 动态调试利器:IDA Pro × Frida 混合调试实战
android·逆向
g_i_a_o_giao16 小时前
Android8 binder源码学习分析笔记(一)
android·java·笔记·学习·binder·安卓源码分析