Activity和Fragment生命周期 —— 新手指南

在Android开发中,ActivityFragment是两种常用的组件,它们都有各自的生命周期方法。理解它们的生命周期对于开发稳定和高效的应用程序至关重要。

1、Activity与Fragment同时运行时生命周期执行顺序探究

2、Android Fragment和Activity的生命周期图对比

3、Android 中Activity和Fragment生命周期的具体变化详解

Activity生命周期

Activity的生命周期包括以下几个主要方法:

  1. onCreate() : 在Activity创建时调用,用于初始化Activity。
  2. onStart() : 在Activity即将变为可见时调用。
  3. onResume() : 在Activity即将开始与用户交互时调用。
  4. onPause() : 在系统即将开始继续另一个Activity时调用。
  5. onStop() : 在Activity不再可见时调用。
  6. onDestroy() : 在Activity即将被销毁时调用。

Fragment生命周期

Fragment的生命周期方法与Activity类似,但也有一些特有的方法:

  1. onAttach() : 当Fragment与Activity关联时调用。
  2. onCreate() : 在Fragment被创建时调用。
  3. onCreateView() : 为Fragment创建视图层次结构时调用。
  4. onActivityCreated() : 在Activity的onCreate()方法返回后调用。
  5. onStart() : 在Fragment变为可见时调用。
  6. onResume() : 在Fragment即将与用户交互时调用。
  7. onPause() : 在Fragment不再与用户交互时调用。
  8. onStop() : 在Fragment不再可见时调用。
  9. onDestroyView() : 在Fragment的视图层次结构被移除时调用。
  10. onDestroy() : 在Fragment被销毁时调用。
  11. onDetach() : 在Fragment与Activity解除关联时调用。

生命周期的交互

当Activity和Fragment同时运行时,它们的生命周期方法会按特定顺序执行。例如:

  • 在首次打开界面时,Fragment的onStart() 通常先于Activity的onStart() 执行1
  • 当按下Home键返回桌面时,Fragment的onResume() 是最后执行的1
  • 在意外销毁后恢复时,Fragment的onAttach()onCreate() 优先执行1

示例代码

以下是一个简单的示例,展示了如何在Activity中管理Fragment的生命周期:

java 复制代码
public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        if (savedInstanceState == null) {
            getSupportFragmentManager().beginTransaction()
                .replace(R.id.container, new ExamplFragment()).commit();
        }
    }
}

  
public class ExampleFragment extends Fragment {

    @Override
    public void onAttach(Context context) {
        super.onAttach(context);
        // Fragment与Activity关联时调用
    }

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        // Fragment被创建时调用
    }

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
        Bundle savedInstanceState) {
        // 为Fragment创建视图层次结构
        return inflater.inflate(R.layout.fragment_example, container, false);
    }

    @Override
    public void onActivityCreated(Bundle savedInstanceState) {
        super.onActivityCreated(savedInstanceState);
        // 在Activity的onCreate()方法返回后调用
    }

    @Override
    public void onStart() {
        super.onStart();
        // Fragment变为可见时调用
    }

    @Override
    public void onResume() {
        super.onResume();
        // Fragment即将与用户交互时调用
    }

    @Override
    public void onPause() {
        super.onPause();
        // Fragment不再与用户交互时调用
    }
 
    @Override
    public void onStop() {
        super.onStop();
        // Fragment不再可见时调用
    }

    @Override
    public void onDestroyView() {
        super.onDestroyView();
        // Fragment的视图层次结构被移除时调用
    }

    @Override
    public void onDestroy() {
        super.onDestroy();
        // Fragment被销毁时调用
    }

    @Override
    public void onDetach() {
        super.onDetach();
        // Fragment与Activity解除关联时调用
    }

}

理解Activity和Fragment的生命周期有助于开发者更好地管理资源,避免内存泄漏,并确保应用程序在各种情况下都能正常运行1 2

相关推荐
知其然亦知其所以然7 分钟前
一位大厂面试官的灵魂发问:Executor 和 Executors 有什么区别?
java·后端·面试
Attacking-Coder19 分钟前
前端面试宝典---创建对象的配置
前端·面试·职场和发展
IT技术图谱27 分钟前
【绝非标题党】Android15适配,太恶心了
android·面试
uhakadotcom28 分钟前
2025年最佳的5个找工作AI助手:全面指南
算法·面试·github
古鸽1008630 分钟前
Vehicle HAL 介绍
android
和煦的春风31 分钟前
Linux | 关于CPU 调频的一些QA
android·linux
dafaycoding34 分钟前
使用 Perlin Noise、Catmull-Rom 创建闭合平滑曲线
android·计算机视觉
行墨35 分钟前
RePlugin 插件化工程中插件与宿主之间的通信方式
android
V少年36 分钟前
深入浅出安卓SurfaceFlinger
android
V少年36 分钟前
深入浅出安卓MediaCodec
android