AndroidViewModel предоставляет контекст приложения
Если вам нужно использовать контекст внутри вашей Viewmodel, вы должны использовать AndroidViewModel (AVM), потому что он содержит контекст приложения. Чтобы получить контекстный вызов getApplication()
, в противном случае используйте обычную ViewModel (VM).
AndroidViewModel имеет контекст приложения . Мы все знаем, что наличие статического контекста является злом, так как может вызвать утечку памяти !! Однако наличие статического экземпляра приложения не так плохо, как можно подумать, поскольку в запущенном приложении есть только один экземпляр приложения.
Следовательно, использование и наличие экземпляра Application в определенном классе не является проблемой в целом. Но если экземпляр приложения ссылается на них, это проблема из-за проблемы ссылочного цикла.
Смотрите также об экземпляре приложения
AndroidViewModel Проблематично для юнит-тестов
AVM предоставляет контекст приложения, который проблематичен для модульного тестирования. Модульные тесты не должны иметь дело с каким-либо жизненным циклом Android, таким как контекст.