Вот есть у меня ViewModel() и Application(). В UI стоит onClickListener, в нём стоит вызов функции, сохраняющий key-value данные. Функция сохраняющая key-value данные (fun saveData(data: Boolean) { }) должна быть во ViewModel или в Application?
Очень редко когда он нужен. Например, из него должен расти корень DI. Также там могут быть всякие специфичные вещи, типа инициализации мультидекса, инициализации библиотек креш-логгинга, и загрузка нативных библиотек.
Функции saveData в нём точно быть не должно.