Lifecycle-Aware组件如何在android中有用

时间:2018-03-27 05:02:01

标签: android android-lifecycle

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

在实际应用中有什么用途。 举例或现场情景。

LifecycleObserver的用途是什么?

2 个答案:

答案 0 :(得分:1)

在粗粒度和细粒度位置更新之间切换。使用生命周期感知组件可在您的位置应用可见时启用细粒度位置更新,并在应用处于后台时切换到粗粒度更新。

LiveData是一个生命周期感知组件,允许您的应用在您的使用更改位置时自动更新用户界面。

停止并开始视频缓冲。使用生命周期感知组件尽快启动视频缓冲,但推迟播放直到应用程序完全启动。您还可以使用生命周期感知组件来终止应用程序销毁时的缓冲。

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

暂停和恢复动画的drawables。使用生命周期感知组件处理在应用程序处于后台时暂停动画可绘制内容并在应用程序位于前台后恢复可绘制内容

参考此链接

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

答案 1 :(得分:1)

  

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

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

如果你看一下there写的片段, 它指出,在实时应用程序中,我们编写了大量代码,这些代码依赖于组件的生命周期(例如Activity和Fragment )。因此,在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