活动与片段生命周期

N S*_*rma 18 android android-fragments

我对新应用程序的工作,我现在用的ActivityFragment.他们之间有什么主要区别?

更新

我在Android文档中找到了我想要的好答案.

文档描述

活动和片段之间生命周期中最显着的差异是如何将其存储在其各自的后台堆栈中.默认情况下,活动被置于由系统停止时由系统管理的活动的后堆栈中(以便用户可以使用"后退"按钮导航回到它,如"任务"和"后台堆栈"中所述).但是,只有当您在删除片段的事务期间通过调用addToBackStack()显式请求保存实例时,才会将片段放入由主机活动管理的后向堆栈中.

主机是否Activity保留Fragment与其关联的不同后备堆栈以及单个应用程序保留多个堆栈的任何方案.??

GrI*_*sHu 47

 Differences between Activity and Fragment lifecyle in Android
Run Code Online (Sandbox Code Playgroud)

片段是活动的一部分,它为该活动贡献自己的UI.片段可以被视为子活动.片段用于在更宽屏幕设备中有效地使用空间.

活动可以包含基于屏幕大小的0或多个片段.片段可以在多个活动中重用,因此它在活动中就像一个可重用的组件.

片段不能独立存在.它应该始终是活动的一部分.活动可以存在,其中没有任何片段.

片段生命周期比活动生命周期更复杂,因为它具有更多状态.生命周期状态如下所示:

在此输入图像描述

onInflate

在片段生命的最开始,调用onInflate方法.在这个方法中,我们可以保存一些配置参数和一些属性在XML布局文件中定义.

onAttach

在这一步之后,onAttach被调用.一旦片段"附加"到"父"活动,就会调用此方法,我们可以使用此方法存储有关活动的引用.

的onCreate

这是最重要的一步,我们的片段在创作过程中.此方法可用于启动某些线程以检索数据信息,可能来自远程服务器.该onCreateView是调用的时候,片段具有创建视图hierarchy.During这种方法,我们会膨胀的片段里面我们的布局方法.

在此阶段,我们无法确定我们的活动是否仍然存在,因此我们无法指望它进行某些操作.当在onActivityCreated中创建并准备好"父"活动时,我们会收到通知.

从现在开始,我们的活动是活跃的并且已经创建,我们可以在需要时使用它.

在onStart

下一步是onStart方法.在这里,我们执行onStart活动中常见的事情,在此阶段,我们的片段是可见的,但它仍然没有与用户交互.

的onResume

当片段准备好与用户交互onResume被调用.

然后可能会发生活动暂停,因此调用活动的onPause.那么onPause片段方法也被调用.

在它之后,可能会发生操作系统决定销毁我们的片段视图,因此调用onDestroyView.之后,如果系统决定关闭我们的片段,则调用onDestroy方法.

这里我们应该释放所有连接活动等等因为我们的片段接近死亡.即使是在破坏阶段,它仍然依附于父亲的活动.最后一步是将片段从活动中分离出来,并在调用onDetach时发生.

我希望你能从中理解.

谢谢.

  • 你错过了'onStop`. (7认同)

My *_*God 9

直接来自开发人员碎片指南 -

片段所在活动的生命周期直接影响片段的生命周期,因此活动的每个生命周期回调都会为每个片段产生类似的回调.

例如,当活动收到时,活动中的onPause()每个片段都会收到onPause().

但是,片段有一些额外的生命周期回调,它们处理与活动的唯一交互,以便执行构建和销毁片段的UI等操作.这些额外的回调方法是:

1) onAttach() =>

当片段与活动相关联时调用(此处传递活动).

2) onCreateView() =>

调用以创建与片段关联的视图层次结构.

3) onActivityCreated() =>

在活动的onCreate()方法返回时调用.

4) onDestroyView() =>

在删除与该片段关联的视图层次结构时调用.

5) onDetach() =>

当片段与活动分离时调用.

一旦activity达到恢复状态,您可以自由添加和删除fragmentsactivity.因此,只有当活动处于恢复状态时,片段的生命周期才能独立地改变.

然而,当activity离开恢复状态时,fragment再次被推动其生命周期activity.

检查活动和碎片.