Передать Application или ApplicationContext в ViewModel? - PullRequest
1 голос
/ 09 февраля 2020

У меня небольшой вопрос. Я работаю над приложением Android и использую шаблон проектирования MVVM.

Мне нужно передать контекст приложения некоторым моделям представления и репозиторию из-за таких действий, как: создание экземпляра базы данных комнаты , воспроизведение звуковых файлов, сохранение небольших данных в общих настройках. Я сделал это с помощью Dependency Injection.

Я знаю, что существует только один экземпляр контекста приложения, поэтому при его пропуске утечки памяти не будет, в отличие от контекстов действия.

моя неясность: я обнаружил, что передача ApplicationContext (экземпляр Context) работает, но также работает Application (экземпляр приложения). В чем разница между этими двумя вариантами? Какой из них лучше передать в качестве аргумента?

1 Ответ

2 голосов
/ 09 февраля 2020

Объект Application является буквально тем же объектом , что и объект, возвращаемый getApplicationContext().

Если вы используете AndroidViewModel с фабрика по умолчанию, вы получите объект Application, пригодный для использования в качестве Context (поскольку Application расширяет Context).

...