【Android】fragment 和 fragment 生命周期

fragment 和 fragment 生命周期

fragment

fragment 就是可重复使用的应用界面片段。与 activity 类似,fragment 具有生命周期并可以响应用户输入。fragment 在屏幕上显示时,会始终包含在 activity 的视图层次结构中。由于 fragment 侧重于可重用性和模块化,因此甚至可以由单个 activity 同时托管多个 fragment。每个 fragment 都管理着自己单独的生命周期。


fragment 生命周期

和 activity 一样,fragment 可以初始化以及从内存中移除;在整个存在期间,fragment 也会在屏幕上显示、消失和重新显示。此外,与 activity 类似,fragment 也有具有多种状态的生命周期,并提供了几种可替换的方法来响应它们之间的转换。fragment 生命周期有五种状态,由 Lifecycle.State 枚举表示。

  • INITIALIZED:fragment 的一个新实例已实例化。
  • CREATED:系统已调用第一批 fragment 生命周期方法。在 fragment 处于此状态期间,系统也会创建与其关联的视图。
  • STARTED:fragment 在屏幕上可见,但没有焦点,这意味着其无法响应用户输入。
  • RESUMED:fragment 可见并已获得焦点。
  • DESTROYED:fragment 对象已解除实例化。

此外,与 activity 类似,Fragment 类还提供了多种可替换的方法来响应生命周期事件。

  • onCreate():fragment 已实例化并处于 CREATED 状态。不过,其对应的视图尚未创建。
  • onCreateView():此方法可用于膨胀布局。fragment 已进入 CREATED 状态。
  • onViewCreated():此方法在创建视图后调用。在此方法中,您通常会通过调用 findViewById() 将特定视图绑定到属性。
  • onStart():fragment 已进入 STARTED 状态。
  • onResume():fragment 已进入 RESUMED 状态,现已具有焦点(可响应用户输入)。
  • onPause():fragment 已重新进入 STARTED 状态。相应界面对用户可见。
  • onStop():fragment 已重新进入 CREATED 状态。该对象已实例化,但它在屏幕上不再显示。
  • onDestroyView():该方法在 fragment 进入 DESTROYED 状态之前调用。视图已从内存中移除,但 fragment 对象仍然存在。
  • onDestroy():fragment 进入 DESTROYED 状态。
    下图总结了 fragment 生命周期以及状态之间的转换。

74470aacefa170bd.png

生命周期状态和回调方法与用于 activity 的方法非常相似。但请注意 onCreate() 方法的差异。通过 activity,您可以使用此方法膨胀布局和绑定视图。不过,在 fragment 生命周期中,系统会在创建视图之前调用 onCreate(),所以您无法在此处膨胀布局。您可以改为在 onCreateView() 中执行此操作。然后,在创建视图后,系统会调用 onViewCreated() 方法,您可以在该方法中将属性绑定到特定视图。

猜你喜欢

转载自blog.csdn.net/weixin_42473228/article/details/131530587