您的位置:

掌握Android Fragment的生命周期

一、Fragment生命周期简介

Fragment是Android中一个可重用的组件,用于构建动态的用户界面,并且可以嵌入到Activity中。一个Activity可以包含多个Fragment,不同的Fragment可以有不同的行为和交互,从而实现更加灵活的UI设计。Fragment的生命周期是指Fragment在运行过程中会经历的状态和回调方法,了解Fragment的生命周期对于开发应用具有重要的意义。下面我们来简单了解一下Fragment的生命周期:

  • onAttach(): 当Fragment被添加到Activity中时调用
  • onCreate(): 当Fragment被创建时调用
  • onCreateView(): 当Fragment的UI被创建时调用
  • onActivityCreated(): 当Fragment所在的Activity完成onCreate()时调用
  • onStart(): 当Fragment可见时调用
  • onResume(): 当Fragment与用户交互时调用
  • onPause(): 当Fragment失去焦点但仍然可见时调用
  • onStop(): 当Fragment完全不可见时调用
  • onDestroyView(): 当Fragment的UI被移除时调用
  • onDestroy(): 当Fragment被销毁时调用
  • onDetach(): 当Fragment与Activity解除关联时调用

二、Fragment生命周期详解

1. onAttach()

onAttach()方法会在Fragment被添加到Activity中时调用,可以通过该方法获取到与Fragment相关联的Activity的引用:


public class TestFragment extends Fragment {

    @Override
    public void onAttach(Context context) {
        super.onAttach(context);
        Activity activity = (Activity) context;
    }

}

2. onCreate()

onCreate()方法会在Fragment被创建时调用,可以在该方法中进行一些初始化的操作:


public class TestFragment extends Fragment {

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        // 进行一些初始化操作
    }

}

3. onCreateView()

onCreateView()方法会在Fragment的UI被创建时调用,该方法返回一个View对象用于显示Fragment的UI界面。可以在该方法中使用LayoutInflater将一个布局文件转换成一个View对象:


public class TestFragment extends Fragment {

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        View view = inflater.inflate(R.layout.fragment_test, container, false);
        return view;
    }

}

4. onActivityCreated()

onActivityCreated()方法会在Fragment所在的Activity完成onCreate()时调用,一般用于在Activity和Fragment之间进行交互操作:


public class TestFragment extends Fragment {

    @Override
    public void onActivityCreated(Bundle savedInstanceState) {
        super.onActivityCreated(savedInstanceState);
        // 进行一些与Activity交互的操作
    }

}

5. onStart()和onResume()

onStart()方法会在Fragment可见时调用,onResume()方法会在Fragment与用户交互时调用,这两个方法用于准备Fragment的UI和资源,使Fragment处于工作状态。例如,可以在onStart()方法中启动一个动画效果,或者在onResume()方法中注册一个广播接收器:


public class TestFragment extends Fragment {

    @Override
    public void onStart() {
        super.onStart();
        // 启动一个动画效果
    }

    @Override
    public void onResume() {
        super.onResume();
        // 注册一个广播接收器
    }

}

6. onPause()和onStop()

onPause()方法会在Fragment失去焦点但仍然可见时调用,onStop()方法会在Fragment完全不可见时调用,这两个方法用于释放Fragment占用的资源。例如,可以在onPause()方法中停止一个动画效果,或者在onStop()方法中取消一个网络连接:


public class TestFragment extends Fragment {

    @Override
    public void onPause() {
        super.onPause();
        // 停止一个动画效果
    }

    @Override
    public void onStop() {
        super.onStop();
        // 取消一个网络连接
    }

}

7. onDestroyView()和onDestroy()

onDestroyView()方法会在Fragment的UI被移除时调用,onDestroy()方法会在Fragment被销毁时调用,这两个方法用于释放Fragment占用的资源和回收内存。例如,可以在onDestroyView()方法中释放一个资源对象,或者在onDestroy()方法中取消一个计时器:


public class TestFragment extends Fragment {

    @Override
    public void onDestroyView() {
        super.onDestroyView();
        // 释放一个资源对象
    }

    @Override
    public void onDestroy() {
        super.onDestroy();
        // 取消一个计时器
    }

}

8. onDetach()

onDetach()方法会在Fragment与Activity解除关联时调用,可以在该方法中释放与Activity相关的资源:


public class TestFragment extends Fragment {

    @Override
    public void onDetach() {
        super.onDetach();
        // 释放与Activity相关的资源
    }

}

三、小结

以上就是Android Fragment的生命周期,不同的状态和回调方法对于Fragment的运行和交互具有重要的意义,开发者需要熟练掌握。在实际开发中,如果需要进行复杂的UI设计和交互操作,一般需要借助Fragment来实现。希望本文对您理解和掌握Android Fragment的生命周期有所帮助。

掌握Android Fragment的生命周期

2023-05-14
Fragment生命周期详解

2023-05-18
Android横竖屏切换的生命周期管理

Android设备支持横向和纵向两种屏幕方向,应用程序在不同的方向下可能会有不同的布局和展示效果。然而,当用户旋转设备屏幕时,应用程序并不一定会正确地重新加载并展示内容,这可能会导致崩溃或不完整的界面

2023-12-08
Flutter生命周期

2023-05-18
Android应用生命周期详解

2023-05-14
Android Fragment应用——如何实现页面模块化

一、什么是Fragment Fragment是Android系统中的一种组件,可以看做是Activity的子页面,一般是被一个Activity承载着,是Activity的可重用的组成部分。通过将界面模

2023-12-08
Fragment嵌套Fragment

2023-05-20
Android Studio Fragment使用示例

2023-05-14
Fragment切换详解

2023-05-20
Android Fragment实现页面模块化

2023-05-14
Android Fragment切换详解

2023-05-21
Android Application生命周期

2023-05-16
Android Activity 生命周期:理解Androi

Android应用的核心是Activity,它是用户与应用程序交互的窗口。一个Activity可以简单地理解为用户与应用的一个窗口,因此,Android中的Activity生命周期管理也非常重要,它可

2023-12-08
提高用户体验的必备技能:Android Finish为中心

2023-05-14
Android Activity生命周期及应用场景

2023-05-20
Android Application生命周期详解

2023-05-21
AndroidX:简化Android项目依赖管理

2023-05-14
Android开发中必备的生命周期理解

2023-05-14
Android横竖屏切换生命周期详解

2023-05-20
Android 如何使用 configChanges 优化

2023-05-14