[英]How to send actions from View to ViewModel in MVVM architecture in Android
地獄! 我正在努力提高自己的Android體系結構技能。 我發現這篇文章說在視圖中調用viewModels函數是一種不好的做法。
例如,以這種方式調用函數是不好的做法。
override fun onClick(v: View?) {
if (v == vk_login) {
loginViewModel.onVKLoginClick()
}
}
我了解如何使用LiveData將數據和動作從ViewModel傳輸到View。 為此,我們在視圖中初始化LiveData。 但是我找不到任何信息如何從視圖中使用LiveData(或類似方式)發送用戶操作信息。
我應該在視圖中初始化LiveData並為其訂閱視圖模型(聽起來很奇怪)。
還是像這樣使用smth更好:
loginViewModel.nameFromUser.value = "some name from text view"
還是我發現的文章是錯誤的並且可以從視圖調用viewModels函數可以嗎?
ViewModel
絕不應包含對Android框架的引用,更不要說視圖了,否則會導致內存泄漏。 最好像這樣使用loginViewModel.nameFromUser.value = "some name from text view"
。
視圖可以觀察實時數據,但是ViewModel
無法觀察視圖,因為視圖不會發出LiveData
對象。
從文檔引用:
警告:ViewModel絕不能引用視圖,生命周期或任何可能包含對活動上下文的引用的類。 ViewModel對象旨在使視圖或LifecycleOwners的特定實例壽命更長
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.