WorkManager中需要上下文

时间:2018-08-01 12:34:18

标签: android android-jetpack android-workmanager

我正在使用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)

2 个答案:

答案 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类中的上下文,请使用其构造中的上下文。