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

相关推荐
Keya12 分钟前
在HarmonyOS(鸿蒙)中H5页面中的视频不会自动播放
app·harmonyos·arkts
用户20187928316727 分钟前
舞台剧兼职演员Dialog
android
参宿四南河三30 分钟前
从Android实际应用场景出发,讲述RxJava3的简单使用
android·rxjava
扶我起来还能学_31 分钟前
uniapp Android&iOS 定位权限检查
android·javascript·ios·前端框架·uni-app
爱学习的茄子39 分钟前
JavaScript闭包实战:防抖的优雅实现
前端·javascript·面试
ZsTs11941 分钟前
面试被 JS 基础问懵?11 个核心模块笔记帮你吃透(含考点陷阱)
面试
每次的天空42 分钟前
Android-重学kotlin(协程源码第二阶段)新学习总结
android·学习·kotlin
stevenzqzq44 分钟前
Kotlin 中主构造函数和次构造函数的区别
android·kotlin
IT猿手2 小时前
2025最新智能优化算法:沙狐优化(Rüppell‘s Fox Optimizer,RFO)算法求解23个经典函数测试集,完整MATLAB代码
android·算法·matlab·迁移学习·优化算法·动态多目标优化·动态多目标进化算法
国家不保护废物2 小时前
多模态模型数据传输的秘密武器:html5对象Blob深度解析
前端·面试·html