Я перепутал с концепцией MVVM, что ViewModel не должен ссылаться на View.
В моем сценарии использования я должен использовать привязку данных и оборачивать Drawable by LiveData и наблюдать его значение в представлении xml.
Основываясь на предложении от Android, которое я реализовал, как показано ниже
https://developer.android.com/topic/libraries/architecture/viewmodel
Если ViewModel нужен контекст приложения, например, для поиска системной службы, он может расширитьAndroidViewModel класс и иметь конструктор, который получает приложение в конструкторе, так как класс приложения расширяет контекст.
MyViewModel.kt
class MyViewModel(application: Application): AndroidViewModel(application){
private val _showIcon = MutableLiveData<Drawable>
val showIcon: LiveData<Drawable>
get() = _showIcon
fun applyChanged(){
if(condition){
_showIcon.value = AppCompatResources.getDrawable(getApplication(),R.drawable.icon1)
}else{
_showIcon.value = null
}
}
}
main_activity.xml
android:drawableTop="@{viewModel.showIcon}"
Вопрос:
Этот подход подходит для концепции MVVM?Есть ли что-то, что я должен сделать с контекстом внутри ViewModel, чтобы предотвратить утечку памяти?
Или потенциальная проблема в моем коде?
Большое вам спасибо!