目录
[Fragment 生命周期主要包括以下几个阶段:](#Fragment 生命周期主要包括以下几个阶段:)
在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
的视图可能会被销毁和重建。