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

相关推荐
野生技术架构师2 小时前
一线大厂Java面试八股文全栈通关手册(含源码级详解)
java·开发语言·面试
RATi GORI3 小时前
MySQL中的CASE WHEN语句:用法、示例与解析
android·数据库·mysql
MoFe13 小时前
【Mysql】创建IP授权用户并授权
android
冬奇Lab4 小时前
Camera2 API架构基础:Android视频系统的大门
android·音视频开发·源码阅读
hnlgzb5 小时前
安卓app kotlin语法,Hilt是什么东西?
android·开发语言·kotlin
Android系统攻城狮6 小时前
Android tinyalsa深度解析之pcm_params_get_periods_min调用流程与实战(一百七十三)
android·pcm·tinyalsa·音频进阶手册
Xempastissimo7 小时前
Android常见界面控件
android
法欧特斯卡雷特7 小时前
从 Kotlin 编译器 API 的变化开始: 2.3.20
android·后端·开源
Lee川7 小时前
🔍 React 面试官眼中的“秘密武器”:深度剖析 useRef
前端·react.js·面试
词元Max8 小时前
1.5 Harness 架构深度解析:Claude Code 为什么强?
android·架构