Можно ли прокидывать ApplicationContext в ViewModel?

Я знаю, что есть AndroidViewModel, которая в параметры себе принимает application, но для чего именно нужен applicationContext в вью модели? Есть ли конкретные примеры применения такого контекста именно во вью модели? На практике application контекст ни разу не нужен был.


Ответы (1 шт):

Автор решения: Wlad

Да, можно.
Для этого существует AndroidViewModel.
Работа с ним точно такая же, как и с обычным ViewModel.
Единственное различие - создание самого класса (конструктов и класс-родитель).
Вам просто надо указать Aplication в конструкторе.
Инициализация объекта AndroidVM ничем не отличается от обычной VM

class VM(private val apl: Application) : AndroidViewModel(apl){
////
}

p.s. зачем это нужно на практике? самый банальный пример...

Есть TextView которое отображает какой-то текст.
есть значение по умолчанию, которое устанавливается в это TextView из string.xml.
ну и сама "переменная" этого значения.

чтобы не делать однотипных операций несколько раз, просто при создании viewModel указываете, что значение по умолчанию берется из string'ов. а чтобы получить доступ к String.xml - надо иметь Контекст во ВьюМодели. или Application

а TextView отображает значение из viewModel.
и ваша задача остается только менять значение в самой модели.

→ Ссылка