我們公司一直在使用MVP模式開發Android應用程序。使用MVP,我們將所有業務邏輯放在演示者和活動/片段內,然後在從演示者接收事件回調時負責視圖更新。MVVM中的Activity/Fragment和ViewModel應該做些什麼
現在,我們決定嘗試使用Android Databinding的MVVM。看起來,通過MVVM,我們可以將所有業務邏輯放入ViewModel中(就像MVP中的Presenter一樣),並且還可以在一個對象中通知視圖(數據模型的任何更改)。
但是,這在我們腦海中提出了問題,我們應該留給活動/片段來處理什麼?由於我們採用MVP模式來避免脂肪活動/片段。我們不希望有苗條活動/片段,然後胖視圖模型。
我們認爲我們可以留下來是由活動處理/片段至今
- 請求/檢查許可
- 訪問上下文
- 訪問資源
每校,註釋或建議值得歡迎,因爲我對MVVM相當陌生,即使它看起來與MVP相似。
謝謝。
多一點的問題
是否有可能和好的做法MVVM與聽者(如MVP)相結合?例如
public class MainActivityViewModel extends BaseObservable {
MainActivityViewModelListener listener;
User user;
public void setMainActivityViewModelListener(MainActivityViewModelListener listener) {
this.listener = listener;
}
public void refreshUser(View v) {
// some user update via Internet
notifyPropertyChanged(BR.userAlias);
if (listener != null) {
listener.onUserRefreshed(user);
}
}
@Bindable
public void getUserAlias() {
return user.getAlias();
}
}
public interface MainActivityViewModelListener {
void onUserRefreshed(User user);
}
public class MainActivity implements MainActivityViewModelListener {
MainActivityBinding binding;
@Override
public void onCreate(Bundle savedInstanceState) {
binding = DataBindingUtil.setContentView(R.layout.main_activity);
MainActivityViewModel viewModel = new MainActivityViewModel();
viewModel.setMainActivityViewModelListener(this);
binding.setMainActivityViewModel(viewModel);
}
@Override
public void onUserRefreshed(User user) {
// do some update
}
}
+ 1 Github鏈接。到目前爲止,我經歷了幾個教程並嘗試一個實現示例,這個項目示例將會有所幫助! –
你也可以參考[this](http://stackoverflow.com/a/40479052/3134215)瞭解更多。 –
嘿! @RaviRupareliya,片段交易和動畫應該在活動上完成? –