在 Oreo 及更高版本中使用 WorkManager 时,我应该显示持续通知吗?
Should I show ongoing notification when using WorkManager in Oreo and above?
在后台运行的 Worker
的 doWork()
方法中执行任务时(例如,使用 PeriodicWorkRequest
在后台定期运行的 worker),应该我显示正在进行的通知?如果是这样,我该怎么做?假设我有类似的东西:
class NoticeWorker(context: Context, params: WorkerParameters)
: Worker(context, params) {
override fun doWork(): Result {
// do some work here
return Result.SUCCESS
}
}
然后用
执行
WorkManager.getInstance().enque(workerObj)
不,在 Android 版本 >= 23(包括 Oreo)上,WorkManager
将默认使用 JobScheduler
实际排队和执行工作。从 JobScheduler 文档中,我们看到:
While a job is running, the system holds a wakelock on behalf of your app. For this reason, you do not need to take any action to guarantee that the device stays awake for the duration of the job.
想法是使用 WorkManager
允许系统决定何时以及如何在后台做事,这对性能有好处,所以他们试图让我们尽可能简单所有这些逻辑都被抽象掉了。您只需指定需要完成的操作即可。
在后台运行的 Worker
的 doWork()
方法中执行任务时(例如,使用 PeriodicWorkRequest
在后台定期运行的 worker),应该我显示正在进行的通知?如果是这样,我该怎么做?假设我有类似的东西:
class NoticeWorker(context: Context, params: WorkerParameters)
: Worker(context, params) {
override fun doWork(): Result {
// do some work here
return Result.SUCCESS
}
}
然后用
执行WorkManager.getInstance().enque(workerObj)
不,在 Android 版本 >= 23(包括 Oreo)上,WorkManager
将默认使用 JobScheduler
实际排队和执行工作。从 JobScheduler 文档中,我们看到:
While a job is running, the system holds a wakelock on behalf of your app. For this reason, you do not need to take any action to guarantee that the device stays awake for the duration of the job.
想法是使用 WorkManager
允许系统决定何时以及如何在后台做事,这对性能有好处,所以他们试图让我们尽可能简单所有这些逻辑都被抽象掉了。您只需指定需要完成的操作即可。