在Android中fragment的生命周期
目录
Fragment 生命周期主要包括以下几个阶段:
详细Kotlin代码和中文注释
生命周期解释:
总结:
在Android中,Fragment
的生命周期类似于 Activity
,但有其独特之处。以下是 Fragment
生命周期的主要方法,并通过Kotlin代码进行详细的讲解。
Fragment
生命周期主要包括以下几个阶段:
onAttach()
onCreate()
onCreateView()
onViewCreated()
onStart()
onResume()
onPause()
onStop()
onDestroyView()
onDestroy()
onDetach()
详细Kotlin代码和中文注释
class MyFragment : Fragment() {// Fragment被附加到Activity时调用override fun onAttach(context: Context) {super.onAttach(context)Log.d("FragmentLifecycle", "onAttach: Fragment附加到Activity")// 此时可以访问Activity的上下文}// Fragment创建时调用(此时Fragment与UI无关)override fun onCreate(savedInstanceState: Bundle?) {super.onCreate(savedInstanceState)Log.d("FragmentLifecycle", "onCreate: Fragment创建")// 用于初始化数据,例如恢复状态}// 创建Fragment的视图层次结构override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?,savedInstanceState: Bundle?): View? {Log.d("FragmentLifecycle", "onCreateView: 创建视图")// 这里通常是返回Fragment的UI布局return inflater.inflate(R.layout.fragment_layout, container, false)}// Fragment视图创建完成后调用(视图被完全创建后)override fun onViewCreated(view: View, savedInstanceState: Bundle?) {super.onViewCreated(view, savedInstanceState)Log.d("FragmentLifecycle", "onViewCreated: 视图创建完成")// 可以在这里与视图进行交互(例如设置按钮监听器)}// Fragment可见时调用override fun onStart() {super.onStart()Log.d("FragmentLifecycle", "onStart: Fragment开始")// 这里可以处理一些准备显示的数据}// Fragment进入前台并开始与用户交互时调用override fun onResume() {super.onResume()Log.d("FragmentLifecycle", "onResume: Fragment可交互")// 用户可以看到Fragment并开始交互}// Fragment不可交互时调用(进入后台或被遮挡)override fun onPause() {super.onPause()Log.d("FragmentLifecycle", "onPause: Fragment暂停")// 用于保存数据或停止耗时操作}// Fragment不可见时调用override fun onStop() {super.onStop()Log.d("FragmentLifecycle", "onStop: Fragment停止")// 停止所有与UI相关的操作,例如动画}// Fragment视图被销毁时调用override fun onDestroyView() {super.onDestroyView()Log.d("FragmentLifecycle", "onDestroyView: 视图销毁")// 清理与视图相关的资源}// Fragment被销毁时调用override fun onDestroy() {super.onDestroy()Log.d("FragmentLifecycle", "onDestroy: Fragment销毁")// 最后进行资源清理,例如取消网络请求}// Fragment与Activity解绑时调用override fun onDetach() {super.onDetach()Log.d("FragmentLifecycle", "onDetach: Fragment与Activity解绑")// Fragment完全与Activity分离}
}
生命周期解释:
- onAttach(): 当
Fragment
关联到Activity
上时调用。此时可以访问Activity
的上下文。 - onCreate():
Fragment
被创建时调用,适合在此进行一些初始化操作,但此时还没有绑定 UI。 - onCreateView(): 系统调用此方法来绘制
Fragment
的 UI。通过inflater
创建并返回Fragment
的视图层次结构。 - onViewCreated(): 视图已经创建完成并绑定到
Fragment
,可以在这里初始化 UI 元素。 - onStart():
Fragment
对用户可见,但还没有与用户交互。 - onResume():
Fragment
进入前台并且可以与用户交互时调用。 - onPause():
Fragment
进入后台时调用,通常用于保存数据或者停止动画等操作。 - onStop():
Fragment
完全不可见时调用,可以用于释放与界面无关的资源。 - onDestroyView():
Fragment
的视图被销毁时调用,意味着与 UI 相关的资源可以被清理。 - onDestroy():
Fragment
自身即将被销毁时调用,用于进行最终的清理工作。 - onDetach():
Fragment
与Activity
解绑时调用,释放所有的引用。
总结:
Fragment
的生命周期非常类似于 Activity
,但是它有自己特有的生命周期方法(如 onCreateView()
、onDestroyView()
),因为 Fragment
的视图可能会被销毁和重建。