Android 服务保活/常驻 (Android Service Daemon)
建议只在App的核心功能需要保活/常驻时使用。
-
启动前台服务
-
在 Service 的
onStartCommand
方法里返回START_STICKY
-
覆盖 Service 的
onDestroy / onTaskRemoved
方法, 保存数据到磁盘, 然后重新拉起服务 -
监听 8 种系统广播 & 拉起 Service :
CONNECTIVITY_CHANGE
网络连接改变
USER_PRESENT
用户屏幕解锁
ACTION_POWER_CONNECTED
电源连接 / 断开
ACTION_POWER_DISCONNECTED
BOOT_COMPLETED
系统启动完成
PACKAGE_ADDED
安装 / 卸载软件包
PACKAGE_REMOVED
-
JobScheduler
/WorkManager
守护服务 : 定时检查服务是否在运行,如果不在运行就拉起来 -
守护服务和
BroadcastReceiver
运行在:watch
子进程中,与主进程分离 -
使用定时
Observable
: 避免 Android 定制系统 JobScheduler / AlarmManager 唤醒间隔不稳定的情况 -
引导用户将APP加入白名单,如小米 开启神隐模式
用 Intent 跳转
Android Doze 模式
华为 自启管理
华为 锁屏清理
小米 自启动管理
小米 神隐模式
三星 5.0/5.1 自启动应用程序管理
三星 6.0+ 未监视的应用程序管理
魅族 自启动管理
魅族 待机耗电管理
Oppo 自启动管理
Vivo 后台高耗电
金立 应用自启
金立 绿色后台
乐视 自启动管理
乐视 应用保护
酷派 自启动管理
联想 后台管理
联想 后台耗电优化
中兴 自启管理
中兴 锁屏加速受保护应用
配合 android.support.v7.AlertDialog 引导用户将 App 加入白名单.
-
工作服务运行在主进程中,免去与服务通信需使用AIDL或其他IPC方式的麻烦
参考了 Poweramp, 启动的前台服务与 UI 运行在同一进程中。
-
防止重复启动Service,调用startService(Intent i)时检查
若服务还在运行,就什么也不做;若服务不在运行就拉起来。