【Android】Android 服务保活/常驻

Android 服务保活/常驻 (Android Service Daemon)

建议只在App的核心功能需要保活/常驻时使用。

  1. 启动前台服务

  2. 在 Service 的 onStartCommand 方法里返回 START_STICKY

  3. 覆盖 Service 的 onDestroy / onTaskRemoved 方法, 保存数据到磁盘, 然后重新拉起服务

  4. 监听 8 种系统广播 & 拉起 Service :
    CONNECTIVITY_CHANGE 网络连接改变
    USER_PRESENT 用户屏幕解锁
    ACTION_POWER_CONNECTED 电源连接 / 断开
    ACTION_POWER_DISCONNECTED
    BOOT_COMPLETED 系统启动完成
    PACKAGE_ADDED 安装 / 卸载软件包
    PACKAGE_REMOVED

  5. JobScheduler/WorkManager 守护服务 : 定时检查服务是否在运行,如果不在运行就拉起来

  6. 守护服务和BroadcastReceiver运行在:watch子进程中,与主进程分离

  7. 使用定时 Observable : 避免 Android 定制系统 JobScheduler / AlarmManager 唤醒间隔不稳定的情况

  8. 引导用户将APP加入白名单,如小米 开启神隐模式

    用 Intent 跳转

    Android Doze 模式

    华为 自启管理

    华为 锁屏清理

    小米 自启动管理

    小米 神隐模式

    三星 5.0/5.1 自启动应用程序管理

    三星 6.0+ 未监视的应用程序管理

    魅族 自启动管理

    魅族 待机耗电管理

    Oppo 自启动管理

    Vivo 后台高耗电

    金立 应用自启

    金立 绿色后台

    乐视 自启动管理

    乐视 应用保护

    酷派 自启动管理

    联想 后台管理

    联想 后台耗电优化

    中兴 自启管理

    中兴 锁屏加速受保护应用

    配合 android.support.v7.AlertDialog 引导用户将 App 加入白名单.

  9. 工作服务运行在主进程中,免去与服务通信需使用AIDL或其他IPC方式的麻烦

    参考了 Poweramp, 启动的前台服务与 UI 运行在同一进程中。

  10. 防止重复启动Service,调用startService(Intent i)时检查

    若服务还在运行,就什么也不做;若服务不在运行就拉起来。

相关推荐
似霰34 分钟前
安卓adb shell串口基础指令
android·adb
fatiaozhang95273 小时前
中兴云电脑W102D_晶晨S905X2_2+16G_mt7661无线_安卓9.0_线刷固件包
android·adb·电视盒子·魔百盒刷机·魔百盒固件
CYRUS_STUDIO4 小时前
Android APP 热修复原理
android·app·hotfix
鸿蒙布道师4 小时前
鸿蒙NEXT开发通知工具类(ArkTs)
android·ios·华为·harmonyos·arkts·鸿蒙系统·huawei
鸿蒙布道师4 小时前
鸿蒙NEXT开发网络相关工具类(ArkTs)
android·ios·华为·harmonyos·arkts·鸿蒙系统·huawei
大耳猫4 小时前
【解决】Android Gradle Sync 报错 Could not read workspace metadata
android·gradle·android studio
ta叫我小白5 小时前
实现 Android 图片信息获取和 EXIF 坐标解析
android·exif·经纬度
dpxiaolong6 小时前
RK3588平台用v4l工具调试USB摄像头实践(亮度,饱和度,对比度,色相等)
android·windows
tangweiguo030519877 小时前
Android 混合开发实战:统一 View 与 Compose 的浅色/深色主题方案
android
老狼孩111227 小时前
2025新版懒人精灵零基础及各板块核心系统视频教程-全分辨率免ROOT自动化开发
android·机器人·自动化·lua·脚本开发·懒人精灵·免root开发