Fragment生命周期
Fragment 的生命周期与 Activity 的生命周期相似,但具有自己独特的生命周期回调方法。理解 Fragment 的生命周期对于有效地管理 Fragment 的状态和资源非常重要。以下是 Fragment 的生命周期状态及其对应的回调方法:
Fragment 生命周期状态
onAttach(Context context)
调用时机:Fragment 被添加到 Activity 时调用。
用途:在此方法中可以获取到与 Fragment 关联的 Activity 的引用。
示例:
@Override public void onAttach(@NonNull Context context) { super.onAttach(context); // 与 Activity 进行交互 }
onCreate(Bundle savedInstanceState)
调用时机:Fragment 被创建时调用。
用途:进行一次性初始化,例如加载配置或数据。
示例:
@Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); // 初始化代码 }
onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
调用时机:创建 Fragment 的 UI 视图时调用。
用途:返回一个 View 对象作为 Fragment 的界面,通常会使用布局文件。
示例:
@Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { return inflater.inflate(R.layout.fragment_layout, container, false); }
onViewCreated(View view, Bundle savedInstanceState)
调用时机:在
onCreateView()
之后调用。用途:此时可以对 Fragment 的视图进行初始化操作,如设置监听器。
示例:
@Override public void onViewCreated(@NonNull View view, Bundle savedInstanceState) { super.onViewCreated(view, savedInstanceState); // 初始化视图组件 }
onActivityCreated(Bundle savedInstanceState)
调用时机:当 Fragment 所在的 Activity 的
onCreate()
方法执行完毕时调用。用途:此时可以访问 Activity 的 UI 组件,适合进行最后的初始化。
示例:
@Override public void onActivityCreated(Bundle savedInstanceState) { super.onActivityCreated(savedInstanceState); // 访问 Activity 的 UI 组件 }
onStart()
调用时机:Fragment 即将变为可见时调用。
用途:在此方法中执行需要在 Fragment 可见时进行的操作。
示例:
@Override public void onStart() { super.onStart(); // 注册监听器或更新 UI }
onResume()
调用时机:Fragment 准备与用户交互时调用。
用途:此时可以开始播放动画或音乐等。
示例:
@Override public void onResume() { super.onResume(); // 恢复活动或获取用户输入 }
onPause()
调用时机:当另一个 Fragment 或 Activity 进入前台时调用。
用途:在此方法中暂停动画或保存数据。
示例:
@Override public void onPause() { super.onPause(); // 暂停活动 }
onStop()
调用时机:Fragment 不再可见时调用。
用途:在此方法中进行较长时间的资源释放或保存应用状态。
示例:
@Override public void onStop() { super.onStop(); // 保存数据或释放资源 }
onDestroyView()
调用时机:Fragment 的视图被销毁时调用。
用途:可以在此处清理视图相关的资源。
示例:
@Override public void onDestroyView() { super.onDestroyView(); // 清理视图资源 }
onDestroy()
调用时机:Fragment 即将被销毁时调用。
用途:在此方法中清理 Fragment 的资源。
示例:
@Override public void onDestroy() { super.onDestroy(); // 清理资源 }
onDetach()
调用时机:Fragment 与 Activity 分离时调用。
用途:可以在此方法中执行一些最后的清理工作。
示例:
@Override public void onDetach() { super.onDetach(); // 与 Activity 的交互结束 }
生命周期总结
创建阶段:
onAttach()
→onCreate()
→onCreateView()
→onViewCreated()
→onActivityCreated()
运行阶段:用户与 Fragment 交互时。
暂停阶段:
onPause()
→onStop()
销毁阶段:
onDestroyView()
→onDestroy()
→onDetach()
小结
理解 Fragment 的生命周期是构建高效、稳定的 Android 应用的重要组成部分。通过重写合适的生命周期回调方法,可以在不同的状态下执行相应的操作,从而有效管理 Fragment 的状态和资源。
Last updated