具有MVP的Android架构组件

Jar*_*vis 16 android android-architecture-components

谷歌IO 17上发布了新的Android架构组件.

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

在Github上的谷歌样本中,他们使用了MVVM模型. Google示例

Qua*_*yen 13

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

意见不是处方.

但是,Room, ViewModel, ViewData开发了三个主要组件(),具有广泛的用途,但不关注任何特定模式.
例如,

  • 如果您使用SQLite在应用程序中保留本地数据,那么无论您使用何种模式,都可以使用Room,它实际上是一个很好的库,具有很多好处,例如减少锅炉板代码,在编译中验证SQLite语法时间等
  • 此外,LifeCycle,LiveData和ViewModel都有自己的优点.特别是,它们可以很好地解决生命周期处理问题.
  • LiveData为您提供了另一种观察者模式工具,可以反应性地处理数据流.(就像RxJava为我们提供的一个很棒的功能).
  • ...

最后,为您提问.

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

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

更新:
如果您想了解MVP模式项目如何与新的体系结构组件一起使用,请在Github上检查我的存储库.我通过使用Room for local persistence和LifeCycle来创建生命周期感知的Presenter来增强以前的MVP模型.


Duy*_*ham 5

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

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

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

您可以查看以下2个分支:

  • realm_livedata:Realm和LiveData的MVP

  • room_livedata:MVP与Room持久性库和LiveData

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

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

快乐的编码!