Skip to content
阅读进度

LiveData 如何感知 Lifecycle 并自动管理观察者? ​

返回 架构与 SDK 目录

标准回答 ​

调用 observe(lifecycleOwner, observer) 后,LiveData 监听该 owner 的生命周期:处于 STARTED 或 RESUMED 时视为活跃并分发更新;不活跃时暂停分发;进入 DESTROYED 时移除观察者。observeForever 不受这套生命周期自动移除机制保护,需要主动 removeObserver。

通俗例子 ​

Fragment 用 viewLifecycleOwner 观察,当 View 销毁时观察关系被清理;重新创建 View 后重新观察并显示当前数据。

深入解释 ​

**什么时候推送更新:**普通带 LifecycleOwner 的观察者,在 owner 处于 STARTED 或 RESUMED 等活跃状态时接收更新;不活跃时不会照常向这份界面分发。

**生命周期结束以后:**owner 销毁时相关观察者会被移除。observeForever 不受这套生命周期自动管理,需要手动移除,不能把两种观察方式当成一样。

内容来源 ​

用完整回答理解机制,用真实证据解释项目。