Как передать рабочие параметры в класс WorkManager - PullRequest
0 голосов
/ 19 декабря 2018

В одном из моих приложений для 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
    }
}

Вот как я пытаюсь создать экземпляр этого класса:

CommonWorkManager<Unit, Unit>(context!!, ).lambdaFunction= {
    presenter?.fetchMasterData()
}

ТакКак я могу передать workerParams в качестве второго параметра.

Здесь «P» - это параметр, а «R» - это тип возврата в CommonWorkManager<P, R>

.

1 Ответ

0 голосов
/ 19 декабря 2018

Кажется, мы не можем создать экземпляры WorkerParameters, потому что у него есть скрытый конструктор с аннотацией @RestrictTo(RestrictTo.Scope.LIBRARY_GROUP).Согласно документации мы не создаем экземпляры подкласса Worker, библиотека делает это за нас:

Сначала вы определите свой класс Worker, ипереопределить его doWork() метод.Ваш рабочий класс определяет, как выполнить операцию, но не имеет никакой информации о том, когда должна выполняться задача.Затем вы создаете объект OneTimeWorkRequest на основе этого Worker, затем ставите задачу в очередь с помощью WorkManager:

val work = OneTimeWorkRequest.Builder(CommonWorkManager::class.java).build()
WorkManager.getInstance().enqueue(work)

Мы можем заключить, что мы не можем создать универсальный Workerт. е. CommonWorkManager<P, R> в вашем случае.WorkManager предназначен для конкретных задач.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...