【发布时间】:2018-03-27 14:29:09
【问题描述】:
生命周期感知组件执行操作以响应另一个组件生命周期状态的变化,例如活动和片段。这些组件可帮助您生成组织更好、通常更轻量级的代码,更易于维护。
这在实际应用中有什么用。 给出示例或现场场景。
LifecycleObserver 有什么用?
【问题讨论】:
生命周期感知组件执行操作以响应另一个组件生命周期状态的变化,例如活动和片段。这些组件可帮助您生成组织更好、通常更轻量级的代码,更易于维护。
这在实际应用中有什么用。 给出示例或现场场景。
LifecycleObserver 有什么用?
【问题讨论】:
在粗粒度和细粒度位置更新之间切换。使用生命周期感知组件在您的位置应用可见时启用细粒度位置更新,并在应用处于后台时切换到粗粒度更新。
LiveData 是一个生命周期感知组件,可让您的应用在您使用更改位置时自动更新 UI。
停止和启动视频缓冲。使用生命周期感知组件尽快启动视频缓冲,但延迟播放直到应用程序完全启动。您还可以使用生命周期感知组件在您的应用被销毁时终止缓冲。
启动和停止网络连接。使用生命周期感知组件在应用程序处于前台时启用网络数据的实时更新(流式传输),并在应用程序进入后台时自动暂停。
暂停和恢复动画绘图。使用生命周期感知组件来处理当应用程序在后台时暂停动画绘图并在应用程序在前台后恢复绘图
参考这个链接
https://developer.android.com/topic/libraries/architecture/lifecycle.html
一些例子
https://github.com/shashankkapsime/android-location-services-using-livedata-lifecycle-components
【讨论】:
生命周期感知组件执行操作以响应另一个组件生命周期状态的变化,例如活动和片段。这些组件可帮助您生成组织更好、通常更轻量级的代码,更易于维护。
您应该进一步阅读文档,虽然它没有那么长;-)
如果你看一下sn-ps写的there,
它指出,在实时应用程序中,我们编写了大量依赖于组件生命周期的代码(例如 Activity 和 Fragment)。所以在onStart()、onStop()等生命周期方法中管理这些相当多的代码很难维护。
此外,不能保证用onStart() 编写的代码将在onStop() 之前被调用。 例如,假设您在onStart() 方法中进行操作之前正在做一些配置检查(参见下面的sn-p)。
@Override
public void onStart() {
super.onStart();
Util.checkUserStatus(result -> {
// what if this callback is invoked AFTER activity is stopped?
if (result) {
myLocationListener.start();
}
});
}
使用Life-cycle aware components,我们可以以孤立的方式完成这些事情。
为了更多的了解,我会推荐这个IO/17 event。
【讨论】: