具有MVP的Android架构组件

时间:2017-05-28 19:43:34

标签: android android-architecture-components

在谷歌IO 17上发布新的Android架构组件。

那么我们应该将MVP用于架构组件和MVVM吗?

在Github上的谷歌示例中,他们使用了MVVM模型。 Google Sample

2 个答案:

答案 0 :(得分:13)

关于架构模式的选择及其实现,它总是取决于许多因素,例如团队成员,应用程序的类型等。
在Google的博客文章中,他们已经说过架构组件主要是

  

意见不是处方。

但是,开发了三个主要组件(Room, ViewModel, ViewData),范围广泛,但不关注任何特定模式。
例如,

  • 如果您使用SQLite在应用中保留本地数据,则可以 无论你使用什么样的模式,你都是房间,它真的是一个 伟大的图书馆,有很多好处,如减少锅炉板 代码,在编译时验证SQLite语法等。
  • 此外,LifeCycle,LiveData和ViewModel都有自己的强项 点。特别是,它们可以很好地解决生命周期处理问题。
  • LiveData为您提供了另一种观察者模式工具,可以反应性地处理数据流。 (就像RxJava为我们提供的一个很棒的功能)。
  • ...

最后,问你的问题。

  

那么我们应该将MVP与架构组件一起使用吗?

答案是"它是Android框架的一个很好的部分,所以为什么不"。

<强>更新
如果您想了解MVP模式项目如何与新架构组件协同工作,请查看我的repository on Github。我通过使用Room for local persistence和LifeCycle来创建生命周期感知的Presenter来增强以前的MVP模型。

答案 1 :(得分:5)

我目前正在构建一个模板项目,它使用MVP模式和Google Architecture组件(Room,LiveData),并与Realm和LiveData的混合版本进行比较:

https://github.com/duyp/mvp-template

我认为某些Google架构组件与MVP模式兼容,不仅适用于MVVM:D

您可以查看2 following branches

  • realm_livedata:带有Realm和LiveData的MVP

  • room_livedata:带房间持久性库和LiveData的MVP

它比Google sample项目(我使用Dagger 2,RxAndroid,Retrofit,Gson和干净的架构)复杂得多,希望您找到更好的解决方案。如果有任何问题或建议,您可以在my github project上留下评论或问题。

我还创建了一个项目,使用MVVM和新的Google架构组件,包括Realm,Dagger 2,实时数据:https://github.com/duyp/mvvm-template

快乐的编码!