繁体   English   中英

具有MVP的Android架构组件

[英]Android architecture components with MVP

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

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

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

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

意见不是处方。

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

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

最后,为您提问。

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

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

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

我目前正在构建一个模板项目,它使用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 :具有Room持久性库和LiveData的MVP

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

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

快乐的编码!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM