1.定义一个后台任务
class SimpleWorker(context: Context, params: WorkerParameters) : Worker(context, params) {
override fun doWork(): Result {
Log.d("SimpleWorker", "do work in SimpleWorker")
return Result.success()
}
// dowork任务是在子线程中执行的
}
2.构建任务请求
val request = OneTimeWorkRequest.Builder(SimpleWorker::class.java).build()
周期性任务请求:
val request = PeriodicWorkRequest.Builder(SimpleWorker::class.java, 15,
TimeUnit.MINUTES).build()
3.运行
WorkManager.getInstance(context).enqueue(request)
使用
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
doWorkBtn.setOnClickListener {
val request = OneTimeWorkRequest.Builder(SimpleWorker::class.java).build()
WorkManager.getInstance(this).enqueue(request)
}
}
}
以下是WorkManager和Service之间的一些主要区别:
-
WorkManager可以在不同版本的Android系统上提供一致的行为,而Service的行为可能因Android版本而异。
-
WorkManager可以根据设备的电池和网络状态自动调整任务执行时间,而Service可能会影响设备的电池寿命和网络使用。
-
WorkManager提供了许多高级功能,例如链式任务、延迟任务、周期性任务和灵活的重试策略等,而Service的功能相对较少。
-
WorkManager可以与其他Android Architecture Components(例如LiveData和ViewModel)无缝集成,以便更好地管理UI状态。
总的来说,WorkManager和Service都是用于执行后台任务的重要组件。WorkManager提供了更多的高级功能和更好的兼容性,而Service则更适合执行简单的后台任务。