logo
当前位置:首 页 > 移动开发 >android > 查看文章
几十亿的设备都在用 Android 系统,从高端手机到飞机上的影音娱乐系统,应有尽有,不一而足。而 Android OS 则为这几十亿的设备保驾护航,高效管理资源,保障运行流畅,然而有时候却增加了开发卓越 App 的难度。为了简化开发流程,我们在 Google I/O 大会上发布了架构组件(Architecture Components)的预览版,为 App 开发构架提供指南,并为常见任务,如生命周期管理、数据持久性等提供了一系列库。有了这些基础组件的帮助,开发者能够使用更少的样板代码写出模块化 App,将精力用于创新而非重复体力劳动 —— 我们也会在今后继续完善这一基础架构。

目前google官方宣布 Room 和生命周期管理(Lifecycles)的架构组建库 1.0 稳定版正式发布,其 API 已经可以在生产环境的 App 和库中使用,并且我们强烈建议在 App 架构和本地储存方面需要帮助的开发者使用这些 API (只是推荐使用,并不硬性要求)。此外生命周期管理同时也已集成到支持库中(Support Library),因此开发者也可以在标准类别里,如 AppCompatActivity 中使用这些 API。

在架构组件发布之前,google已经自己的 ViewModel 实现,通过Loader(点击查看)和依赖注入(Dependency Injection)保证即使配置数据更改后,ViewModel 依旧不变。Goole最最近改进到了架构组件中的 ViewModel 实现,并完全将开发者从的重复工作解脱出来,以给开发者提供更多的时间用于代码设计、业务逻辑和测试,而不是浪费在样板代码(模板)或担心 Android 生命周期的问题上。

Android Architecture Components

主要包含:

 

  • 应用程序架构指南

    https://developer.android.google.cn/topic/libraries/architecture/guide.htm

  • 添加组件到项目中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

  • ViewModel

    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 开发者都应该面对过生命周期问题,即操作系统启动、停止和销毁 Activity。这意味着开发者需要根据生命周期的不同阶段,有针对性地管理组件状态,比如用于更新用户界面的可观察对象。生命周期管理(Lifecycles)帮助开发者创建 “可感知生命周期的” 组件,让其自己管理自己的生命周期,从而减少内存泄露和崩溃的可能性。生命周期库是其他架构组件(如 LiveData)的基础。

Android声明周期的回调,帮助我们将原先需要在onStart()等生命周期回调的代码可以分离到Activity或者Fragment之外。每个 Android 开发者都应该面对过生命周期问题,即操作系统启动、停止和销毁 Activity。有了Lifecyle这个组件,开发者可通过托管将大大减少内存泄露和Crash的概率。

了解更多 Lifecycles 相关内容:

https://developer.android.google.cn/topic/libraries/architecture/lifecycle.html

LiveData

LiveData 是一款基于观察者模式的可感知生命周期的核心组件。LiveData 为界面代码 (Observer)的监视对象 (Observable),当 LiveData 所持有的数据改变时,它会通知相应的界面代码进行更新。同时,LiveData 持有界面代码 Lifecycle 的引用,这意味着它会在界面代码(LifecycleOwner)的生命周期处于 started 或 resumed 时作出相应更新,而在 LifecycleOwner 被销毁时停止更新。通过 LiveData,开发者可以方便地构建安全性更高、性能更好的高响应度用户界面。

了解更多 LiveData 相关内容:

https://developer.android.google.cn/topic/libraries/architecture/livedata.html

ViewModel

用于实现架构中的ViewModel,同时是与Lifecycle绑定的,使用者无需担心生命周期。ViewModel 将视图的数据和逻辑从具有生命周期特性的实体(如 Activity 和 Fragment)中剥离开来。方便在多个Fragment之前分享数据,比如旋转屏幕后Activity会重新create,这时候使用ViewModel可以轻松缓存使用之前的数据,开发者无需再次请求网络调用数据。

ViewModel 将视图的数据和逻辑从具有生命周期特性的实体(如 Activity 和 Fragment)中剥离开来。直到关联的 Activity 或 Fragment 完全销毁时,ViewModel 才会随之消失,也就是说,即使在旋转屏幕导致 Fragment 被重新创建等事件中,视图数据依旧会被保留。ViewModels 不仅消除了常见的生命周期问题,而且可以帮助构建更为模块化、更方便测试的用户界面。

了解更多 ViewModel 相关内容:

https://developer.android.google.cn/topic/libraries/architecture/viewmodel.html

Room

谷歌推出的一个在Sqlite 之上的ORM映射曾,使用注解,极大简化数据库的操作,更重要的是对内置迁移的支持。而且 Room 可以和 LiveData 集成在一起,提供可观察数据库并能及时响应生命周期的对象。Room 集简洁、强大和可靠性为一身,在管理本地储存上表现卓越,Google强烈推荐开发者尝试。

几乎所有 App 都需要在本地储存数据。自从最早版本开始,Android 就提供了 SQLite,但是直接使用 SQLite是件苦差事。因此,我们推出了 Room,一款简单好用的对象映射层。它和 SQLite 有一样强大的功能,但是节省了很多重复编码的麻烦事儿。它的一些功能,如编译时的数据查询验证、内置迁移支持等,让开发者能够更简单地构建健壮的持久层。而且 Room 可以和 LiveData 集成在一起,提供可观测数据库并感知生命周期的对象。Room 集简洁、强大和可靠性为一身,在管理本地储存上表现卓越,我们强烈推荐各位开发者试用一下。

了解更多 Room 相关内容:

https://developer.android.google.cn/topic/libraries/architecture/room.html

合理化建议

我们借助Goole组件开发的同时,也可以借助其他三方库来辅助我们开发出更好的应用, 开发者技术前线建议:

    • LiveData在某些情况下可使用RxJava2代替。
    • Lifecyle等生命周期管理我们可以借助RxLifeCyle。
    • 数据层官方推荐使用Room或者Realm,等其他ORM皆可。
    • 网络请求库推荐使用Retrofit+Okhttp
    • 多层之间解耦合,推荐使用服务发现(Service Locator) 或者依赖注入(DI),推荐Dagger2
    • Modle和View绑定我们可以使用DataBinding进行快速实现
    • 在使用组件架构时候,推荐使用MvpClean,切记不要Mvp,Mvp,Mvp!

App 架构指南以及更多讯息

最后还有一个要点得说明一下:我们撰写了 “App 架构指南”,涵盖数条适用于所有开发者的关键原则以及针对架构组件的具体指导。因为有开发者向我们反映,清晰、连贯的指南文档很重要,因此我们现在更新了开发者文档,在适当之处指明架构组件。此外,我们还在官网发布了一系列相关视频、codelab 和 App 样本,并且会陆续补充。

App 架构指南:

https://developer.android.google.cn/topic/libraries/architecture/guide.html

Android 架构组件官网:

https://developer.android.google.cn/topic/libraries/architecture/index.html

Google samples 

https://github.com/googlesamples/android-architecture-components

说说梦想,谈谈感悟 ,聊聊技术,有啥要说的来github留言吧 https://github.com/cjx2328

—— 陈 建鑫

陈建鑫
footer logo
未经许可请勿自行使用、转载、修改、复制、发行、出售、发表或以其它方式利用本网站之内容。站长联系:cjx2328#126.com(修改#为@)
Copyright ©ziao Studio All Rights Reserved. E-mail:cjx2328#126.com(#号改成@) 沪ICP备14052271号-3