我正在嘗試學習&在我的應用中實現帶有數據綁定的MVVM。但我在理解/決定一些事情上面臨困難。帶有上下文的Android MVVM數據模型
我有我的應用程序,我需要在多個活動中使用一個標題視圖,所以我基本上創造了這個
view_header.xml
HeaderViewModel.java (implements java.util.Observer)
HeaderDataModel.java (extends java.util.Observable)
其中HeaderViewModel
綁定了view_header.xml
。 現在我包括來自XyzActivity
像這樣在view_header.xml
activity_xyz.xml
&組視圖模型的頭查看,
xyzViewBinding.setHeaderVm(new HeaderViewModel(new HeaderDataModel(mContext)));
現在我必須在此基礎上的問題:
1)由於HeaderDataModel
需要上下文中SharedPreference
&工作BroadcastReceiver
,我初始化它在XyzActivity
而不是HeaderViewModel
- 這是正確的方法嗎?
2)我不得不依靠廣播接收器來更新我的標題視圖,所以我在HeaderDataMode
的構造函數中註冊它。現在我的HeaderDataModel
是Observable
,每當我收到廣播時,我都會呼叫notifyObservers()
,以便觀察者(HeaderViewModel)檢測到它&更新它的視圖.-這是正確的方法嗎? 3)當我在HeaderDataModel的構造函數中註冊接收者時,我在數據模型中創建了onDestroy()方法,我在其中取消註冊&我從XyzActivity的onDestroy()調用此onDestroy。
我想你的意思是我必須在HeaderViewModel中初始化它。但作爲HeaderDataModel構造函數需要上下文,爲了從ViewModel初始化它,我需要上下文。所以這不是針對主體,ViewModel不應該引用任何的Android API或類?這就是爲什麼我在Activity中初始化它並將其傳遞給ViewModel,以便ViewModel可以修改/使用它。 –