Fragment 生命周期学习
管理片段生命周期与管理 Activity 生命周期很相似。和 Activity 一样,片段也以三种状态存在:
<dl style="box-sizing: inherit; margin: 0px; padding: 0px; color: rgb(33, 33, 33); font-family: Roboto, sans-serif; font-size: 16px; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration-style: initial; text-decoration-color: initial;">
<dt style="box-sizing: inherit; font: 700 16px/24px Roboto, sans-serif; margin: 16px 0px;">继续</dt>
<dd style="box-sizing: inherit; margin: 16px 0px; padding: 0px 0px 0px 40px;">片段在运行中的 Activity 中可见。</dd>
<dt style="box-sizing: inherit; font: 700 16px/24px Roboto, sans-serif; margin: 16px 0px;">暂停</dt>
<dd style="box-sizing: inherit; margin: 16px 0px; padding: 0px 0px 0px 40px;">另一个 Activity 位于前台并具有焦点,但此片段所在的 Activity 仍然可见(前台 Activity 部分透明,或未覆盖整个屏幕)。</dd>
<dt style="box-sizing: inherit; font: 700 16px/24px Roboto, sans-serif; margin: 16px 0px;">停止</dt>
<dd style="box-sizing: inherit; margin: 16px 0px; padding: 0px 0px 0px 40px;">片段不可见。宿主 Activity 已停止,或片段已从 Activity 中移除,但已添加到返回栈。 停止片段仍然处于活动状态(系统会保留所有状态和成员信息)。 不过,它对用户不再可见,如果 Activity 被终止,它也会被终止。</dd>
</dl>
同样与 Activity 一样,假使 Activity 的进程被终止,而您需要在重建 Activity 时恢复片段状态,您也可以使用 [Bundle](https://developer.android.google.cn/reference/android/os/Bundle.html)
保留片段的状态。您可以在片段的 [onSaveInstanceState()](https://developer.android.google.cn/reference/android/app/Fragment.html#onSaveInstanceState(android.os.Bundle))
回调期间保存状态,并可在 [onCreate()](https://developer.android.google.cn/reference/android/app/Fragment.html#onCreate(android.os.Bundle))
、[onCreateView()](https://developer.android.google.cn/reference/android/app/Fragment.html#onCreateView(android.view.LayoutInflater,%20android.view.ViewGroup,%20android.os.Bundle))
或 [onActivityCreated()](https://developer.android.google.cn/reference/android/app/Fragment.html#onActivityCreated(android.os.Bundle))
期间恢复状态。如需了解有关保存状态的详细信息,请参阅 Activity 文档。
Activity 生命周期与片段生命周期之间的最显著差异在于它们在其各自返回栈中的存储方式。 默认情况下,Activity 停止时会被放入由系统管理的 Activity 返回栈(以便用户通过返回按钮回退到 Activity,任务和返回栈对此做了阐述)。不过,仅当您在移除片段的事务执行期间通过调用 [addToBackStack()](https://developer.android.google.cn/reference/android/app/FragmentTransaction.html#addToBackStack(java.lang.String))
显式请求保存实例时,系统才会将片段放入由宿主 Activity 管理的返回栈。
在其他方面,管理片段生命周期与管理 Activity 生命周期非常相似。 因此,管理 Activity 生命周期的做法同样适用于片段。 但您还需要了解 Activity 的生命周期对片段生命周期的影响。
微信截图_20180721155237.png
网友评论