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

相关推荐
Serene_Dream5 小时前
JVM 并发 GC - 三色标记
jvm·面试
游戏开发爱好者85 小时前
日常开发与测试的 App 测试方法、查看设备状态、实时日志、应用数据
android·ios·小程序·https·uni-app·iphone·webview
王码码20355 小时前
Flutter for OpenHarmony 实战之基础组件:第三十一篇 Chip 系列组件 — 灵活的标签化交互
android·flutter·交互·harmonyos
黑码哥6 小时前
ViewHolder设计模式深度剖析:iOS开发者掌握Android列表性能优化的实战指南
android·ios·性能优化·跨平台开发·viewholder
亓才孓6 小时前
[JDBC]元数据
android
独行soc6 小时前
2026年渗透测试面试题总结-17(题目+回答)
android·网络·安全·web安全·渗透测试·安全狮
金融RPA机器人丨实在智能6 小时前
Android Studio开发App项目进入AI深水区:实在智能Agent引领无代码交互革命
android·人工智能·ai·android studio
科技块儿6 小时前
利用IP查询在智慧城市交通信号系统中的应用探索
android·tcp/ip·智慧城市
独行soc7 小时前
2026年渗透测试面试题总结-18(题目+回答)
android·网络·安全·web安全·渗透测试·安全狮
王码码20357 小时前
Flutter for OpenHarmony 实战之基础组件:第二十七篇 BottomSheet — 动态底部弹窗与底部栏菜单
android·flutter·harmonyos