11

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)
4

2 回答 2

31

这取决于Context你需要什么样的。根据的文档Worker,你可以简单地getApplicationContext()直接从Worker类中调用方法来获取Context整个应用程序的,这在这个用例中应该是合理的。

于 2018-08-01T12:39:54.117 回答
1

Worker 类的文档没有提到调用应该getApplicationContext()是获取Context. 另一方面,它确实明确记录了公共构造函数Worker将 aContext作为第一个参数。

public Worker (Context context, 
            WorkerParameters workerParams)

因此,如果您需要Worker类中的上下文,请使用其构造中的上下文。

于 2020-06-01T03:07:35.097 回答