Основное различие между суперклассом ViewModel () и суперклассом AndroidViewModel () заключается в том, что AndroidViewModel () имеет ссылку на контекст приложения (а не на сам контекст действия).
Действия должны быть уничтожены и воссозданы при изменении конфигурации (например, поворот телефона). поэтому плохая идея передавать контекст в ViewModel, поскольку он имеет тенденцию к утечкам памяти (ссылка на уничтоженные действия).
ViewModel предназначен для того, чтобы выдержать эти изменения конфигурации, но ViewModel () не имеет никакой ссылки на Context.
AndroidViewModel (), с другой стороны, имеет ссылку на Приложение (особый тип контекста), поэтому вы можете получить доступ к информации о приложении, такой как packageManager.
class MyViewModel(application: Application) : AndroidViewModel(application)