当前位置: 首页 > news >正文

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? PowerManagerval wakeLock =powerManager?.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, "WakeLock")wakeLock?.acquire()val wifiLock =context.applicationContext.getSystemService(Context.WIFI_SERVICE) as? WifiManagervar 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”

非常规策略

为了防止被滥用 暂不开源

http://www.lryc.cn/news/268198.html

相关文章:

  • 迅为RK3568开发板Ubuntu上使用串口调试
  • 【http】HTTP/1.0、HTTP/1.1和HTTP/2.0
  • automkcert使用教程
  • tekton 发布 kubernetes 应用
  • unity脚本API中OnCollisionEnter()、OnTriggerEnter()二者的区别
  • 2023年12月【考试战报】|ORACLE OCP 19C考试通过
  • 鸿蒙操作系统:从手机到物联网,打造全场景智能体验
  • [Ray Tracing: The Next Week] 笔记
  • 企业级实战项目:基于 pycaret 自动化预测公司是否破产
  • dl转置卷积
  • 详解结构体(包含结构体内存对齐,柔性数组,位段)【尊嘟很详细】
  • 我的NPI项目之Android系统升级 - 同平台多产品的OTA
  • pnpm包管理器
  • flutter websocket发送ping包?
  • 基于采样的自动驾驶规划算法 - PRM,RRT,RRT*,CL-RRT
  • CGAL的D维范围树和线段树
  • 005.HCIA 传输层
  • LLM之RAG实战(八)| 使用Neo4j和LlamaIndex实现多模态RAG
  • 【SpringCloud笔记】(10)消息总线之Bus
  • 超酷的爬虫可视化界面
  • 【kafka消息里会有乱序消费的情况吗?如果有,是怎么解决的?】
  • 【PID精讲12】基于MATLAB和Simulink的仿真教程
  • 手机无人直播:解放直播的新方式
  • ios 之 数据库、地理位置、应用内跳转、推送、制作静态库、CoreData
  • Django(三)
  • vscode括号颜色突然变成白色的了,怎么解决
  • 测试服务器带宽(ubuntu)
  • 【WPF】使用Behavior以及ValidationRule实现表单校验
  • ArcGIS渔网的多种用法
  • C++ 中使用 std::map 的一个示例