Fragment 的本质:以源码解构 AndroidX Fragment 1.2.2 的生命周期
2023-11-02 01:20:59
在 Android 开发中,Fragment 作为构建用户界面模块化的重要工具,扮演着不可或缺的角色。深入理解其生命周期对于打造健壮稳定的应用至关重要。本文将以 AndroidX Fragment 1.2.2 为例,带你从源码角度剖析 Fragment 的生命周期,揭开它背后的奥秘。
序言
Fragment 的生命周期与宿主 Activity 的生命周期密切相关,可谓唇齿相依。每当 Activity 经历一次生命周期回调,都会引发旗下 Fragment 的生命周期变化。本文将重点探讨 Fragment 的启动流程,深入解析其源码,带你领略 Fragment 的运作机制。
Fragment 的生命周期
Fragment 的生命周期主要由以下几个阶段组成:
- onCreate():Fragment 被创建时调用。
- onCreateView():Fragment 创建视图时调用。
- onActivityCreated():Fragment 与 Activity 关联后调用。
- onStart():Fragment 变为可见时调用。
- onResume():Fragment 获得焦点时调用。
- onPause():Fragment 失去焦点时调用。
- onStop():Fragment 变为不可见时调用。
- onDestroyView():Fragment 销毁其视图时调用。
- onDestroy():Fragment 被销毁时调用。
Fragment 的启动流程
为了深入理解 Fragment 的启动流程,我们从 Fragment 的创建开始说起。在 Activity 的 onCreate() 方法中,通过 FragmentManager.beginTransaction() 创建 Fragment 实例并添加到 Activity 中。这个过程会依次触发 Fragment 的 onCreate()、onCreateView()、onActivityCreated() 方法。
接下来,Activity 进入 onStart() 状态,此时 Fragment 也随之进入 onStart() 状态。当 Activity 调用 onResume() 方法时,Fragment 也将进入 onResume() 状态,获得焦点。
返回栈
返回栈是 Fragment 管理器用来跟踪用户操作的重要机制。当用户在 Activity 中导航时,返回栈会记录下每个 Fragment 的状态。当用户按下返回键时,返回栈会自动弹出当前 Fragment,并恢复到上一个 Fragment 的状态。
示例代码
为了更好地理解 Fragment 的生命周期,我们提供了一个示例代码:
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
FragmentManager fragmentManager = getSupportFragmentManager();
FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
Fragment fragment = new MyFragment();
fragmentTransaction.add(R.id.fragment_container, fragment);
fragmentTransaction.commit();
}
}
在这个示例中,我们在 Activity 的 onCreate() 方法中创建了一个 FragmentManager,并通过 FragmentManager 添加了一个 Fragment 到 Activity 中。
总结
深入理解 Fragment 的生命周期对 Android 开发至关重要。本文通过分析 AndroidX Fragment 1.2.2 的源码,详细阐述了 Fragment 的启动流程,探讨了返回栈等关键概念。掌握这些知识将帮助开发者打造出更加稳定、高效的 Android 应用。