计算机技术实战

纸上得来终觉浅,绝知此事要躬行。

Download this project as a .zip file Download this project as a tar.gz file

后台任务最佳实践

进程和线程

ProcessList定义了进程优先级:

线程优先级是:

线程间通信:

后台任务处理方式的选择

Service生命周期

官网Bound services overviewservices详细介绍并配图说明了Service的生命周期:

IntentService生命周期和Service基本一致,只是处理完所有任务之后,会stopSelf()结束自己。

onStartCommand返回值含义

前台服务

前台服务具有更高的优先级,更难被系统杀掉,但是需要发送状态栏通知,让用户能感知到服务的存在。

用法:

1.声明权限:

    <uses-permission android:name="android.permission.FOREGROUND_SERVICE" />

2.调用方法:

	startForeground(int id, notification)

需要额外创建notification

可延迟的任务

可延迟的任务可以使用JobScheduler,让自定义任务在设定的条件被触发时再执行,如:手机连接USB、WIFI连接。