2017 Google IO 大会 不只确立了 Kotlin 为安卓开发的官方语言,还有一个细节,发布了谷歌官方 Android 应用架构库。这新的架构库旨在帮助开发者设计健壮、可测试的和可维护的应用程序。在Mvp以后,Google又增长Mvp+Clean的开发架构,发现组件化是APP开发的趋势,又提供新的组件库(Android Architecture Components)。11月5日Google宣布kotlin支持iOS开发,昨天进一步发布Android架构组件稳定版。html
在架构组件发布以前,google已经本身的 ViewModel 实现,经过Loader(点击查看)和依赖注入(Dependency Injection)保证即便配置数据更改后,ViewModel 依旧不变。Goole最最近改进到了架构组件中的 ViewModel 实现,并彻底将开发者从的重复工做解脱出来,以给开发者提供更多的时间用于代码设计、业务逻辑和测试,而不是浪费在样板代码(模板)或担忧 Android 生命周期的问题上。android
应用程序架构指南git
https://developer.android.google.cn/topic/libraries/architecture/guide.htmlgithub
添加组件到项目中https://developer.android.google.cn/topic/libraries/architecture/guide.html数据库
处理生命周期编程
https://developer.android.google.cn/topic/libraries/architecture/lifecycle.html缓存
LiveData网络
https://developer.android.google.cn/topic/libraries/architecture/livedata.html架构
ViewModelide
https://developer.android.google.cn/topic/libraries/architecture/viewmodel.html
Room
https://developer.android.google.cn/topic/libraries/architecture/room.html
Components 架构原则
关注支持分离
模型驱动UI,优先持久化模型
响应式编程
Components 介绍
Lifecycle
Android声明周期的回调,帮助咱们将原先须要在onStart()等生命周期回调的代码能够分离到Activity或者Fragment以外。每一个 Android 开发者都应该面对过生命周期问题,即操做系统启动、中止和销毁 Activity。有了Lifecyle这个组件,开发者可经过托管将大大减小内存泄露和Crash的几率。
LiveData
LiveData 是一款基于观察者模式的可感知生命周期的核心组件,他是一个数据持有类,持有数据而且这个数据能够被观察被监听,和其余Observer不一样的是,LiveData 持有界面代码 Lifecycle 的引用,意味着它和Lifecycle是绑定的。能够及时做出相应更新和释放。
ViewModel
用于实现架构中的ViewModel,同时是与Lifecycle绑定的,使用者无需担忧生命周期。ViewModel 将视图的数据和逻辑从具备生命周期特性的实体(如 Activity 和 Fragment)中剥离开来。方便在多个Fragment以前分享数据,好比旋转屏幕后Activity会从新create,这时候使用ViewModel能够轻松缓存使用以前的数据,开发者无需再次请求网络调用数据。
Room
谷歌推出的一个在Sqlite 之上的ORM映射曾,使用注解,极大简化数据库的操做,更重要的是对内置迁移的支持。并且 Room 能够和 LiveData 集成在一块儿,提供可观察数据库并能及时响应生命周期的对象。Room 集简洁、强大和可靠性为一身,在管理本地储存上表现卓越,Google强烈推荐开发者尝试。
合理化建议
咱们借助Goole组件开发的同时,也能够借助其余三方库来辅助咱们开发出更好的应用, 开发者技术前线建议:
LiveData在某些状况下可以使用RxJava2代替。
Lifecyle等生命周期管理咱们能够借助RxLifeCyle。
数据层官方推荐使用Room或者Realm,等其余ORM皆可。
网络请求库推荐使用Retrofit+Okhttp
多层之间解耦合,推荐使用服务发现(Service Locator) 或者依赖注入(DI),推荐Dagger2
。
Modle和View绑定咱们可使用DataBinding进行快速实现
在使用组件架构时候,推荐使用MvpClean,切记不要Mvp,Mvp,Mvp!
Google samples
https://github.com/googlesamples/android-architecture-components
本文章由Tamic原创,在掘金发布。