专栏名称: 开发者全社区
分享和推送Java/Android方向的技术和文章,让你成为这方面的大牛,让你每天都成长一点。同时,我们也会邀请BAT的大牛分享原创!
目录
相关文章推荐
stormzhang  ·  真正该刺激的是收入 ·  16 小时前  
鸿洋  ·  Android主线程锁监控的一种方案 ·  5 天前  
stormzhang  ·  打工人维权,难吗? ·  5 天前  
鸿洋  ·  Android多渠道打包指南 ·  6 天前  
鸿洋  ·  systemserver进程监控者--wat ... ·  1 周前  
51好读  ›  专栏  ›  开发者全社区

Android发布官方的架构库你知道吗?聊聊Android Architecture Componets

开发者全社区  · 公众号  · android  · 2017-05-22 10:13

正文

相关阅读:

使用Kotlin优雅的开发Android应用,附demo

一文让你全面深入了解Kotlin,附优秀的开源Kotlin的Android项目和视频

Kotlin学习资料大全,附学习视频首发

Google IO大会进行中,本次大会Android最大的新闻当属Android O以及Kotlin被官方认可。我发现了原来还有发布官方的架构库,以及推荐使用指南,分享给大家。 


架构原则 

  • 关注分离

  • 模型驱动UI,优先持久化模型

新架构 


如上图所示,为新的架构模式: 

Activity/Fragment 

UI层,通常是Activity/Fragment等 

监听ViewModel,当VIewModel数据更新时刷新UI 

监听用户事件反馈到ViewModel。 

ViewModel 

持有保存,或者想Repository来获取UI层需要的数据 

响应UI层的事件,执行响应的操作 

响应变化,并且通知到UI层 

Repository 

App的完全的数据模型,ViewModel交互的对象 

提供简单的数据修改和获取的接口 

配合好网络层数据的更新与本地持久化数据的更新,同步等 

Data Source 

包含本地的数据库等,网络api等 

这些基本上和现有的一些MVVM,以及Clean架构的组合比较相似,不过谷歌提供了一些新的类库来帮助我们实现这个架构。 

谷歌的新玩具 

本地IO大会谷歌提供了新的类库来实现这个功能,小标题我写新玩具是因为这个库目前还在alpha1版本,官方只建议在个人小项目中使用。 

这个类库包含如下一些东西: 

Lifecycle 

Android声明周期的回调,帮助我们将原先需要在onStart()等生命周期回调的代码可以分离到Activity或者Fragment之外。 

LiveData 

一个数据持有类,持有数据并且这个数据可以被观察被监听,和其他Observer不同的是,它和Lifecycle是绑定的。 

ViewModel 


Room 

谷歌推出的一个Sqlite ORM库,不过使用起来还不错,使用注解,极大简化数据库的操作。 

框架补充 

 

测试 

各层之间的合理分层,为测试提供极大的方便。 

UI层测试 

使用Android Instrumentation Test,借助Espresso库进行,借助Mock的ViewModel,可以专注于测试UI 

ViewModel 测试 

使用Mock的Repository来提供数据,使用JUnit测试,因为不涉及UI,运行速度会快很多。 

Repository测试 

数据层Mock一些数据返回给Repository,使用JUnit测试即可 

数据层测试 

使用JUnit测试 

数据库,使用Room的话官方提供了测试支持,在测试时候创建内存数据库即可。 

网络请求,使用MockWebServer来提供假的服务端即可。 


再补一个会议时的项目结构图,以一个用户信息页面为例。 

最后的话 

 

本文不再贴相关代码,具体各个库的使用请查看官方文档https://developer.android.com/topic/libraries/architecture/guide.html 
附上官方的DEMO项目:https://github.com/googlesamples/android-architecture-components

更多学习资料点击下面的“阅读原文”获取