Shy*_*dda 5 kotlin android-workmanager
在我的一个 android(使用 Kotlin)应用程序中,我想使用 WorkManager 类作为通用类。这是我的类,我想通过传递预期的参数将其用作通用类:
class CommonWorkManager<P, R> (appContext: Context, workerParams: WorkerParameters) : Worker(appContext, workerParams)
{
var lambdaFunction: ((P) -> R)? = null
override fun doWork(): Result {
lambdaFunction
return Result.SUCCESS
}
}
Run Code Online (Sandbox Code Playgroud)
这就是我尝试创建此类的实例的方式:
CommonWorkManager<Unit, Unit>(context!!, ).lambdaFunction= {
presenter?.fetchMasterData()
}
Run Code Online (Sandbox Code Playgroud)
那么我如何workerParams作为第二个参数传递。
这里'P'是参数,'R'是返回类型 CommonWorkManager<P, R>
看来我们无法创建 的实例,WorkerParameters因为它隐藏了带有注释的构造函数@RestrictTo(RestrictTo.Scope.LIBRARY_GROUP)。根据文档,我们不创建Worker子类的实例,库为我们创建了它:
首先,您将定义您的
Worker类,并重写其doWork()方法。您的工作程序类指定如何执行操作,但没有有关任务应何时运行的任何信息。OneTimeWorkRequest接下来,您基于该对象创建一个对象Worker,然后使用以下命令将任务排入队列WorkManager:
val work = OneTimeWorkRequest.Builder(CommonWorkManager::class.java).build()
WorkManager.getInstance().enqueue(work)
Run Code Online (Sandbox Code Playgroud)
我们可以得出结论,我们无法创建 universal Worker,即CommonWorkManager<P, R>在您的情况下。WorkManager用于特定任务。
| 归档时间: |
|
| 查看次数: |
2271 次 |
| 最近记录: |