ServiceKeep
Android Service 保活模块(5.0 以下使用 c 来 fork 进程,5.0 以上使用 JobScheduler 来保活进程)
具体调用:
1、在 WorkService 的 onStartCommand 中执行要保活的操作业务。
2、在初始化过程中调用 KeepAliveManager.INSTANCE.startKeepAliveService(context);
3、停止服务调用 KeepAliveManager.INSTANCE.stopKeepAliveSerice(context);
4、配置 AndroidManifest.xml,增加如下配置:
<!--增加唤醒 WorkService 的定时任务-->
<service
android:name="jack.com.servicekeep.service.KeepAliveJobSchedulerService"
android:persistent="true"
android:exported="false"
android:permission="android.permission.BIND_JOB_SERVICE"
android:process="jack.com.servicekeep.job_scheduler_service"/>
<!--todo 自己业务保活的 Service,重写 WorkService 中的 onStartCommand 其中执行自己的业务逻辑-->
<service
android:name="jack.com.servicekeep.service.WorkService"
android:exported="true"
android:persistent="true"
android:label="Jack"
android:process="com.jack.workservice">
</service>
<!--开机启动监听-->
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
开发常见异常:
1、由于小米系统的深度定制,使用方需要:
设置---自启动管理---选择应用(如 jack.com.servicekeep)---打开自启动即可。
2、直接杀死什么进程,保活的是 WorkService,不是 demo。把 demo 干死了是不可以的,Android 的底层机制。