返回

Fragment 的本质:以源码解构 AndroidX Fragment 1.2.2 的生命周期

Android

在 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 应用。