codelab (Android生命周期意识组件代码平台)

1、介绍

组件: 架构-组件 是一个andorid库的集合帮助你架构你的应用更加的健壮和可测试和可维护的。

注意:体系结构组件库处于开发的alpha状态【还没有稳定】,你可以能够遇到问题,并且提交问题。

codelab 介绍你去-根据生命意识脚骨组件建立android应用。

1、 ViewModel:(视图模型) 提供一个钟方式去创建和重新获取对象在一个指定的生命周期内。一个ViewModel 典型地存储了视图得 数据和其他的组件交流。例如:数据存储或者动态层处理业务逻辑。 去阅读引导主题:viewmodel

2、LifecycleOwner/LifecycleRegistryOwner 【用于处理,或者-说是监听数据改变】
LifecycleOwner和LifecycleRegistryOwner 是接口,实现在LifecycleActivity
and LifecycleFragment 类中。你可以描述其他组件去拥有对象,这些对象实现这些接口去观察生命周期获得者的改变。去读取介绍Handling Lifecycles.

3、LiveData 、允许你去观数据改变通过你的app中的多个组件创建精确的,和严格的路径在它们之间。LiveData 关切复杂的生命周期在你的应用组件中。包括活动,碎片,服务或者其他的 LifecycleOwner定义你的app。 LiveData
管理观察者买书通过停止描述去停止 LifecycleOwner对象,并且取消描述到 LifecycleOwner完成的对象中。阅读引导:LiveData

What you'll build 你将会建立什么
在codeLab中,你实现样式在每个组件描述上。你开始样式应用和天津爱代码通过一系列的步骤,集成多种架构组件在你的进程中。

What you'll need 你什么什么?
1、AS 2.3
2、熟悉Android的活动生命周期activity lifecycle.

设置你的环境

在这个步骤中,你下载代码在整个codelab中然后运行简单的样式app。
下面的连接下载codelab中所需要的代码。
下载
1) 解压代码-然后打开AS 2.3 或者更加高的版本
2)运行第一步骤配置设别和模拟器

运行如下这个页面(横屏)


codelab (Android生命周期意识组件代码平台)_第1张图片
运行结果

3、旋转屏幕并且注意时间重置

你现在需要更新app去持久状态通过屏幕旋转,你能够使用ViewModel 因为这个类的示例存在配置改变,例如:屏幕旋转

3 第二步骤: 添加一个ViewModel

在整个步骤中欧,你使用一个ViewModel去持久状态通过屏幕的旋转并且处理的观察行为在上一步。在上一步,你运行一个活动并且展示了一个定时器。整个定时器重置当一个配置改变例如:屏幕旋转、销毁一个活动。

你能够使用ViewModel去持有数据通过一个活动或者碎片的生命周期。当在前一步演示中,一个活动是一个穷的选择去管理应用的数据。Activities(活动)和碎片(fragments )是一个短生命的对象,他们创建爱你和销毁频繁当一个用户在一个app中交互。一个ViewModel 也更好的去管理任务关联到网络交流,和数据的管理和持久。

1、持有计时器的状态通过使用一个ViewModel
打开ChronoActivity2 和检查类怎么重新获取和使用ViewModel

hronometerViewModel chronometerViewModel
        = ViewModelProviders.of(this).get(ChronometerViewModel.class);

this 引用lifecycleOwner实例,碎片保持ViewModel存活在cycleOwner中,一个viewmodel不会被销毁如果它的拥有这被销毁在配置改变的额时候。例如:-屏幕选装。这个拥有者的新的实例重新连接存在的ViewModel,例如通过下面的图标说明。


codelab (Android生命周期意识组件代码平台)_第2张图片
image.png

注意:一个活动或者-碎片的范围从创建到完成(终止),你必须不困它被销毁。记住当一个设备旋转,活动呗销毁但是任何ViewModel实例被连接如果它没有。

测试它:
运行应用并且验证定时器没有被重置当你执行下面操作:
1、 旋转屏幕
2、导航到另外一个app并且返回
当时,如果你爹系统存在app,timer被重置。
注意:系统持久viewmodel实例在内存中通过拥有者的生命周期而存活着,例如:水偏或者活动。系统不持续一个viewmodel在一个长期的存储中。

3、交换数据通过LiveData

在这个步骤中,你替换始终使用在前一步通过带有一个自顶一个的使用定时器,并且更新UI每秒。 一个-定时器是java.util 类,你能够使用去当前计划任务在未来。你-添加这个逻辑去LiveDataTimerViewModel 勒种,并且离开活动去聚焦于管理用户和ui的交互。
活动会更新UI当定时器通知他去,去帮助拒绝内存泄漏,ViewModel 没有包括引用活动。例如:一个配置改变,例如: 屏幕旋转,可能会导致ViewModel应用到一个活动必须被垃圾回收。系统持有ViewModel实例知道相应活动或者拥有者循环而不再存在。
注意:存储一个上下文引用 或者浏览在ViewModel中能够导致内存泄漏,拒绝引用上下文实例或者view类。onCleared()方法是可用的到-没有描述或者清除对象的引用到其他的对象带有较长的生命周期,而不是清除上下文引用或者视图对象。
替代从Viewmodel中直接一处Views,你配置一个活动或者碎片去观察数据源,接受数据当它改变,范围被调用观察正则。
笔记: 暴露的数据是-可观察的,交换LiveData类的类型。
你可能熟悉观察正则如果你使用数据绑定库 Data Binding Library, 或者其他的相应库-像RxJava。liveData 是一个指定可观察的类当时生命周期意识和仅仅通知活动观察者。

2、LifecycleOwner

https://codelabs.developers.google.com/codelabs/android-lifecycles/?hl=zh-cn#3

你可能感兴趣的:(codelab (Android生命周期意识组件代码平台))