宣布架构组件1.0稳定版
原标题:Announcing Architecture Components 1.0 Stable
链接:https://android-developers.googleblog.com/2017/11/announcing-architecture-components-10.html
作者:Lukas Bergstrom (Android开发框架团队产品经理)
翻译:arjinmc
Android运行在数十亿的设备上,从高端手机到飞机座椅。Android操作系统积极地管理资源以在这一系列设备上表现良好,有时可能使构建强大的应用程序变得复杂。为了更容易,我们在Google I / O上推出了Architecture(架构)组件的预览版,以提供关于应用程序体系架构的指导,以及用于生命周期管理和数据持久性等常见任务的库。总之,这些基础组件使得用较少的样板代码编写模块化应用成为可能,因此开发者可以专注于创新而不是重新发明轮子 - 我们希望在未来继续建立在这个基础之上。
今天,我们很高兴地宣布,Room和Lifecycle架构组件库达到1.0稳定。这些API已准备好用于生产应用程序和库,我们建议开发者寻求应用程序体系结构和本地存储方面的帮助(虽然只是推荐,不需要)。Lifecycle现在也与支持库集成在一起,所以你可以使用它们像AppCompatActivity这样的标准类。
尽管我们今天声明它们是稳定的,但测试版组件已经在一起使用,拥有数十亿次安装的应用程序中使用。像Zappos这样的顶尖开发商因为因架构组件省时间而花费更多的时间在重要的部分:
在Android架构组件发布之前,我们有自己的ViewModel实现。我们使用Loaders和Dependency Injection来通过配置更改来保存我们的ViewModel。我们最近切换到了Architecture Components ViewModel实现,所有这些样板都消失了。我们发现,我们能够花更多的时间在设计,业务逻辑和测试上,而不是在编写模板文件或担心Android生命周期问题。
我们也开始使用直接挂接到Activity生命周期的LiveData。我们用它来检索和显示网络数据,不再需要关注网络呼叫订阅管理。 - Android软件工程师David Henry,Zappos
架构组件提供了一种简单,灵活和实用的方法,可以将开发者从一些常见问题中解放出来,从而专注于构建良好的体验。这是基于应用程序体系结构指导的核心构建块。
Lifecycles
每个Android开发者都必须处理操作系统的启动,停止和销毁他们的活动。这意味着在整个生命周期中管理组件的状态,例如用于更新UI的可观察对象。Lifecycles使创建生命周期感知组件,管理自己的生命周期,减少泄漏或崩溃的可能性。Lifecycle库是LiveData等其他体系结构组件的基础。
LiveData
LiveData是一个支持LiveData并提供更新的生命周期感知的可观察性。你的UI代码订阅了更改,并为LiveData提供了对其生命周期的引用。由于LiveData具有生命周期感知功能,因此它在生命周期启动或恢复时提供更新,但在LifecycleOwner销毁时停止提供更新。LiveData是构建更安全,更高性能的反应性用户界面的简单方法。
ViewModel
ViewModel将视图数据和逻辑的所有权从生命周期绑定的实体(如Activity和Fragment)中分离出来。一个ViewModel被保留下来,直到其关联的Activity或Fragment被永久抛弃 - 这意味着视图数据能够像一个由于旋转而被重新创建的Fragment一样存在。ViewModels不仅可以消除常见的生命周期问题,还可以帮助构建更模块化,更易于测试的UI。
Room
几乎所有的应用程序都需要在本地存储数据。虽然Android从版本1开始已经将SQLite与平台捆绑在一起,但直接使用它可能会很痛苦。Room是一个简单的对象映射图层,可以为SQlite提供更少的样板。编译时查询验证和内置迁移等特性使构建健壮的持久层变得更加容易,而与LiveData集成让Room可以提供数据库支持的,生命周期感知的可观察性。这个房间融合了简单,强大和强大的功能来管理本地存储,我们希望你能尝试一下。
应用程序架构指南和更多
最后但并非最不重要的是,我们创建了应用程序架构指南,提供适用于所有开发者的核心原则,以及有关使用架构组件的特定指南 因为我们从你那里得知,明确和一致的指导非常重要,所以今天我们正在更新开发者文档,指出适当的架构组件。我们还在架构组件网站上提供了丰富的视频,代码库和示例应用程序,还有更多。
看这个空间
尽管第一组架构组件现在是稳定的,但我们知道还有更多的工作要做。在过去的几个月中,我们听取了你们的反馈并进行了改进。我们最近还推出了一个新的架构组件,PagedList到alpha,为了回应你的反馈,使用RecyclerView处理大型数据集太困难了。这只是一个开始 - 我们正在开发更多的主要组件,我们期待在未来几个月宣布。
我们对Architecture Components的期望是让开发者专注于为移动设备提供独特的全新体验。我们很高兴我们终于可以宣布他们稳定的生产使用。我们要感谢社区,在这方面给予了如此高的评价,我们期待在这篇文章的评论中继续讨论。最后,对于那些一直在等待这个稳定发布的人,今天就开始吧。