Differences between Activity and Fragment lifecyle in Android
Fragment是活动的一部分,它为该活动提供自己的UI。Fragment可以被视为子活动。在更大的屏幕设备上,使用Fragment可以更有效地使用空间。
根据屏幕大小,一个活动可能包含零个或多个片段。一个片段可以在多个活动中重复使用,因此它在活动中充当可重复使用的组件。
片段不能独立存在。它应该始终是活动的一部分。而活动可以在其中没有任何片段的情况下存在。
片段的生命周期比活动的生命周期更复杂,因为它有更多的状态。生命周期状态如下图所示:
![enter image description here](https://istack.dev59.com/YU5J1.webp)
onInflate
在片段生命的最开始,调用onInflate方法。我们可以在此方法中保存一些配置参数和在XML布局文件中定义的属性。
onAttach
接着调用onAttach。这个方法被称为片段“附加”到“父”活动时立即调用,我们可以使用这个方法来存储关于活动的引用。
onCreate
这是一个非常重要的步骤,我们的片段正在创建过程中。可以使用此方法启动一些线程来检索数据信息,可能是从远程服务器检索的。当片段需要创建其视图层次结构时,调用onCreateView方法。在此期间,我们将在片段内填充我们的布局。
在这个阶段,我们不能确定我们的活动是否已经创建,因此我们无法依赖它进行某些操作。在onActivityCreated中,当“父”活动被创建并准备就绪时,我们会得到通知。
从现在开始,我们的活动是活跃且已创建,我们可以在需要时使用它。
onStart
下一步是onStart方法。在这里,我们做与活动onStart相同的常见事情,即在此阶段,我们的片段可见,但尚未与用户交互。
onResume
当片段准备好与用户交互时,调用onResume。
然后,可能会出现活动暂停的情况,因此也会调用活动的onPause方法,同时也会调用片段的onPause方法。
之后,操作系统可能决定销毁我们的片段视图,因此会调用onDestroyView。如果系统决定解散我们的片段,则会调用onDestroy方法。
在这里,我们应该释放所有连接和其他活动,因为我们的片段即将死亡。即使在销毁阶段,它仍然附加到父活动上。最后一步是将片段从活动中分离,当调用onDetach时发生。
希望您可以从中理解。
谢谢。