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

相关推荐
江城开朗的豌豆4 小时前
JavaScript篇:函数间的悄悄话:callee和caller的那些事儿
javascript·面试
江城开朗的豌豆4 小时前
JavaScript篇:回调地狱退散!6年老前端教你写出优雅异步代码
前端·javascript·面试
androidwork6 小时前
Android LinearLayout、FrameLayout、RelativeLayout、ConstraintLayout大混战
android·java·kotlin·androidx
每次的天空6 小时前
Android第十三次面试总结基础
android·面试·职场和发展
wu_android6 小时前
Android 相对布局管理器(RelativeLayout)
android
周末程序猿7 小时前
Linux高性能网络编程十谈|C++11实现22种高并发模型
后端·面试
憨憨睡不醒啊7 小时前
如何让LLM智能体开发助力求职之路——构建属于你的智能体开发知识体系📚📚📚
面试·程序员·llm
李斯维8 小时前
循序渐进 Android Binder(二):传递自定义对象和 AIDL 回调
android·java·android studio
androidwork8 小时前
OkHttp 3.0源码解析:从设计理念到核心实现
android·java·okhttp·kotlin
前端小崔9 小时前
前端面试题之ES6保姆级教程
开发语言·前端·javascript·面试·职场和发展·ecmascript·es6