Работал ли с ViewModel

«Работал ли с ViewModel» — вопрос из категории Android компоненты, который задают на 24% собеседований Android Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Да, работал. ViewModel — это компонент архитектуры Android, предназначенный для хранения и управления UI-данными, связанными с жизненным циклом. Основные преимущества:

  • Сохранение данных при повороте экрана (не уничтожается при конфигурационных изменениях).
  • Разделение ответственности — UI-логика выносится из Activity/Fragment.
  • Доступ к данным из нескольких фрагментов через общую ViewModel (используя by activityViewModels()).

Пример:

class MyViewModel : ViewModel() {  
    private val _data = MutableLiveData<String>()  
    val data: LiveData<String> get() = _data  

    fun loadData() {  
        _data.value = "Loaded"  
    }  
}  

// В Activity/Fragment:  
private val viewModel: MyViewModel by viewModels()  
viewModel.data.observe(this) { text ->  
    // Обновление UI  
}  

Важно избегать утечек памяти — не передавать контекст или View в ViewModel. Для работы с ресурсами используйте AndroidViewModel (но с осторожностью).