Fragment及其生命周期浅析

Fragement表示Activity中的行为或用户界面部分。可以将多个片段组合在一个Activity中来构建多窗格UI,以及在多个Activity中重复使用某个片段。可以将片段视为Activity的模块化组成部分,它具有自己的生命周期,能接收自己的输入事件,并且可以在Activity运行时添加或移除片段

片段必须始终嵌入在Activity中,其生命周期受宿主Activity生命周期的影响:

Activity暂停时,其中的所有片段也会暂停;当Activity被销毁时,所有片段也会被销毁。

     创建片段:

     创建片段,必须创建Fragment的子类。Fragment类的代码与Activity非常相似。它包含与Activity类似的回调方法,如onCreate()onStart()onPause()onStop()

 onCreate():创建片段时调用此方法。可以在片段暂停或停止后恢复时保留的必需片段组件。

 onCreateView(): 片段首次绘制其用户界面调用的方法,通过返回片段布局View来显示片段UI

  onPause(): 用户离开片段的第一个信号(但不总是意味着此片段会被销毁)

处理片段生命周期:

   片段以三种状态存在:

   继续: 片段在运行中的Activity中可见

暂停:  另一个 Activity 位于前台并具有焦点,但此片段所在的 Activity 仍然可见(前台 Activity 部分透明,或未覆盖整个屏幕)。

停止: 片段不可见。宿主 Activity 已停止,或片段已从 Activity 中移除,但已添加到返回栈。 停止片段仍然处于活动状态(系统会保留所有状态和成员信息)。 不过,它对用户不再可见,如果 Activity 被终止,它也会被终止。

小诀窍:

1、同样与 Activity 一样,假使 Activity 的进程被终止,而您需要在重建 Activity 时恢复片段状态,您也可以使用 Bundle 保留片段的状态。您可以在片段的 onSaveInstanceState() 回调期间保存状态,并可在 onCreate()onCreateView()  onActivityCreated() 期间恢复状态。如需了解有关保存状态的详细信息,请参阅 Activity 文档。

Activity 生命周期与片段生命周期之间的最显著差异在于它们在其各自返回栈中的存储方式。 默认情况下,Activity 停止时会被放入由系统管理的 Activity 返回栈(以便用户通过返回按钮回退到 Activity任务和返回栈对此做了阐述)。不过,仅当您在移除片段的事务执行期间通过调用 addToBackStack() 显式请求保存实例时,系统才会将片段放入由宿主 Activity 管理的返回栈。

     Activity生命周期协调一致:片段所在的Activity的生命周期会直接影响片段的生命周期,表现为Activity的每次生命周期回调都会引发每个片段的类似回调,如Activity收到onPause时,Activity的每个片段也会收到onPause()

   onAttach(): 在片段已与Activity关联时调用(Activity传递到此方法内)

   onCreateView(): 调用它可创建与片段关联的视图层次结构。

   onActivityCreated(): ActivityonCreate()方法已返回时调用

  onDestroyView(): 移除与片段关联的视图层次结构时调用

  onDetach(): 取消与Activity的关联时调用

 .

猜你喜欢

转载自blog.csdn.net/u013519084/article/details/79454344