Android MVVM 따라 하기 3 번째 글이다.
이번 글에서는 최소한 하지 않아야 할 부분을 적어보려고 한다.
안드로이드 MVVM은 결국 Lifecycle을 알고는 있다. 하지만 Context를 직접 접근하지는 않아야 한다.
class SampleViewModel {
fun showMain(context: Context) {
// Bad
}
단순 데이터 전달이 없다면 어떠한 이벤트를 바로 View에서 처리하는 편이 더 좋다.
하지만 데이터가 추가로 필요한 경우, 상황에 따라 다른 화면으로 이동을 필요로 한다면 다음과 같이 작성하는 게 좋다.
private val _showMain = MutableLiveData<Item?>(null)
val showMain: LiveData<Item?>() get() = _showMain
// or
private val _showMain = MutableStateFlow<Item?>(null)
val showMain: Flow<Item> get() = _showMain.filterNotNull()
fun loadData() {
// Load data
_showMain.value = Item(...)
}
}
이 글에서 알아볼 내용
- ViewModel에서 할 수 있는 것과 하지 말아야 할 것은?
- Context를 넘겨주면 안 되는 이유는?
Read More