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"

非常规策略

为了防止被滥用 暂不开源

相关推荐
百锦再1 小时前
Android Studio开发 SharedPreferences 详解
android·ide·android studio
青春给了狗1 小时前
Android 14 修改侧滑手势动画效果
android
CYRUS STUDIO1 小时前
Android APP 热修复原理
android·app·frida·hotfix·热修复
火柴就是我2 小时前
首次使用Android Studio时,http proxy,gradle问题解决
android
limingade2 小时前
手机打电话时电脑坐席同时收听对方说话并插入IVR预录声音片段
android·智能手机·电脑·蓝牙电话·电脑打电话
浩浩测试一下3 小时前
计算机网络中的DHCP是什么呀? 详情解答
android·网络·计算机网络·安全·web安全·网络安全·安全架构
青春给了狗4 小时前
Android 14 系统统一修改app启动时图标大小和圆角
android
pengyu5 小时前
【Flutter 状态管理 - 柒】 | InheritedWidget:藏在组件树里的"魔法"✨
android·flutter·dart
居然是阿宋6 小时前
Kotlin高阶函数 vs Lambda表达式:关键区别与协作关系
android·开发语言·kotlin
凉、介7 小时前
PCI 总线学习笔记(五)
android·linux·笔记·学习·pcie·pci