Как внедрить экземпляр WorkManager в конструктор ViewModel с помощью Dagger2? - PullRequest
0 голосов
/ 26 марта 2020

Я хочу внедрить экземпляр WorkManager с помощью Dagger2, чтобы использовать его в моей ViewModel следующим образом

class MyViewModel @Inject constructor(workManager: WorkManager) : ViewModel()

Когда я пытаюсь создать модуль для WorkManager, чтобы получить его экземпляр, я получаю сообщение об ошибке: Я не могу предоставить из абстрактного класса. Как добавить экземпляр WorkManager в мой конструктор ViewModel?

1 Ответ

1 голос
/ 27 марта 2020

Чтобы получить экземпляр WorkManager без Dagger, вы должны использовать WorkManager.getInstance(context). Чтобы поместить WorkManager в граф объектов в Dagger, нам просто нужно поместить этот код в метод @Provides.

@Provides
// Maybe @Singleton, though it really doesn't matter.
fun provideWorkManager(context: Context): WorkManager = WorkManager.getInstance(context)

Используя этот метод в модуле Dagger, вы сможете внедрить WorkManager в любом месте, при условии, что ваш компонент имеет доступ к Context.

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