生命周期感知组件如何在 android 中发挥作用

How Lifecycle-Aware Components is usefull in android

生命周期感知组件执行操作以响应另一个组件(例如活动和片段)的生命周期状态的变化。这些组件可帮助您生成组织更好、通常更轻量级的代码,更易于维护。

这个在实际应用中有什么用。 举个例子或现场场景。

LifecycleObserver有什么用?

在粗略和 fine-grained 位置更新之间切换。使用 lifecycle-aware 组件在您的位置应用程序可见时启用 fine-grained 位置更新,并在应用程序处于后台时切换到 coarse-grained 更新。

LiveData 是一个 lifecycle-aware 组件,可让您的应用在您的使用位置发生变化时自动更新 UI。

正在停止和开始视频缓冲。使用 lifecycle-aware 组件尽快开始视频缓冲,但延迟播放直到应用程序完全启动。您还可以使用 lifecycle-aware 组件在您的应用程序被销毁时终止缓冲。

启动和停止网络连接。使用 lifecycle-aware 组件在应用程序处于前台时启用网络数据的实时更新(流式传输),并在应用程序进入后台时自动暂停。

暂停和恢复动画可绘制对象。使用 lifecycle-aware 组件来处理当应用程序在后台时暂停动画可绘制对象并在应用程序位于前台后恢复可绘制对象

参考这个link

https://developer.android.com/topic/libraries/architecture/lifecycle.html

一些例子

https://github.com/shashankkapsime/android-location-services-using-livedata-lifecycle-components

https://github.com/nikkijuk/LifecycleAwareRssReader

Lifecycle-aware components perform actions in response to a change in the lifecycle status of another component, such as activities and fragments. These components help you produce better-organized, and often lighter-weight code, that is easier to maintain.

你应该进一步阅读文档,虽然它并不那么冗长;-)

如果您查看写成 there 的片段, 它指出,在实时应用程序中,我们编写了大量代码,这些代码取决于组件的 life-cycle(,例如 Activity 和 Fragment)。因此,在 life-cycle 方法(例如 onStart()onStop() 中管理这些大量代码很难维护。

此外,无法保证在 onStart() 中编写的代码会在 onStop() 之前被调用。 例如,考虑在 onStart() 方法中执行操作之前进行一些配置检查(请参阅下面的代码段)。

@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