我们公司一直在使用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,片段交易和动画应该在活动上完成? –