后台任务最佳实践
进程和线程
ProcessList定义了进程优先级:
线程优先级是:
线程间通信:
后台任务处理方式的选择
Service生命周期
官网Bound services overview和services详细介绍并配图说明了Service的生命周期:
IntentService生命周期和Service基本一致,只是处理完所有任务之后,会stopSelf()结束自己。
onStartCommand返回值含义
前台服务
前台服务具有更高的优先级,更难被系统杀掉,但是需要发送状态栏通知,让用户能感知到服务的存在。
用法:
1.声明权限:
<uses-permission android:name="android.permission.FOREGROUND_SERVICE" />
2.调用方法:
startForeground(int id, notification)
需要额外创建notification。
可延迟的任务
可延迟的任务可以使用JobScheduler,让自定义任务在设定的条件被触发时再执行,如:手机连接USB、WIFI连接。