我正在使用WorkManager 1.0.0-alpha05
安排一些任务在我的应用可能正在运行或可能未运行的功能中运行。我要完成的工作需要context
,所以我该如何传递上下文?
class CompressWorker : Worker() {
override fun doWork(): Result {
//need context here
Log.e("alz", "work manager runs")
return Result.SUCCESS
}
}
这是我初始化工作的方式。
val oneTimeWork = OneTimeWorkRequestBuilder<CompressWorker>()
.setInitialDelay(15, TimeUnit.MINUTES)
.build()
WorkManager.getInstance().enqueue(oneTimeWork)
答案 0 :(得分:12)
这取决于您需要哪种Context
。根据{{3}},您可以直接从Worker
类直接调用the documentation of the Worker
class方法来获取整个应用程序的Context
,在这种情况下应该是合理的。 / p>
答案 1 :(得分:1)
documentation of the Worker class并没有提到调用getApplicationContext()
应该是获取Context
的首选方式。另一方面,它确实明确证明Worker
的公共构造函数将Context
作为第一个参数。
public Worker (Context context,
WorkerParameters workerParams)
因此,如果您需要Worker
类中的上下文,请使用其构造中的上下文。