Android开发—关于碎片(Fragment)的生命周期(十七)

android开发 笔记(2.14)

  • 1.碎片的四种状态
  • 2.碎片的几种回调方法
  • 3.碎片完整的生命周期示意图
  • 4.简单实例:

1.碎片的四种状态

  1. 运行状态
    若碎片所关联的活动正处于运行状态时,该碎片是可见的那它就也处于运行状态。
  2. 暂停状态
    若碎片所关联的活动进入暂停状态时,该碎片就会进入到暂停状态。
  3. 停止状态
    若碎片所关联的活动进入停止状态时,该碎片就会进入到停止状态;或者当调用FragmentTransaction的remove()、replace()方法将碎片从活动中移除,但有在事务提交之前调用addToBackStack()方法,这时的碎片也会进入到停止状态。
  4. 销毁状态
    若碎片所关联的活动被销毁时,该碎片就会进入到销毁状态;或者通过调用 FragmentTransaction的remove()、replace()方法将碎片从活动中移除,但在事务提交之前并没有调用addToBackStack()方法,这时的碎片也会进入到销毁状态。

2.碎片的几种回调方法

  1. onAttach()
    当碎片和活动建立关联的时候调用。
  2. onCreate()
    当第一次创建碎片的时候调用。
  3. onCreateView()
    为碎片创建视图(加载布局)时调用。
  4. onActivityCreated()
    确保与碎片相关联的活动一定已经创建完毕的时候调用,也就是当Activity中的onCreate方法执行完后调用。
  5. onStart()
    碎片从不可见变为可见时调用。
  6. onResume()
    碎片准备好与用户进行交互时调用。
  7. onPause()
    碎片处于暂停状态时调用。
  8. onStop()
    碎片处于停止状态时调用。
  9. onDestroyView()
    碎片中的视图被移除时调用。
  10. onDestory()
    碎片销毁之前调用。
  11. onDetach()
    当碎片和活动解除关联的时候调用。

3.碎片完整的生命周期示意图

Android开发—关于碎片(Fragment)的生命周期(十七)_第1张图片

4.简单实例:

对上一节的例子进行修改
RightFragment.java相关代码修改为:

    @Override
    public void onAttach(Context context) {
        super.onAttach(context);
        Log.d(TAG, "onAttach ");
    }

    @Override
    public void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        Log.d(TAG, "onCreate ");
    }

    @Nullable
    @Override
    public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
        Log.d(TAG, "onCreateView: ");
        View view = inflater.inflate(R.layout.right_fragment, container, false);
        return view;
    }

    @Override
    public void onActivityCreated(@Nullable Bundle savedInstanceState) {
        super.onActivityCreated(savedInstanceState);
        Log.d(TAG, "onActivityCreated: ");
    }

    @Override
    public void onStart() {
        super.onStart();
        Log.d(TAG, "onStart: ");
    }

    @Override
    public void onResume() {
        super.onResume();
        Log.d(TAG, "onResume: ");
    }

    @Override
    public void onPause() {
        super.onPause();
        Log.d(TAG, "onPause: ");
    }

    @Override
    public void onStop() {
        super.onStop();
        Log.d(TAG, "onStop: ");
    }

    @Override
    public void onDestroyView() {
        super.onDestroyView();
        Log.d(TAG, "onDestroyView: ");
    }

    @Override
    public void onDestroy() {
        super.onDestroy();
        Log.d(TAG, "onDestroy: ");
    }

    @Override
    public void onDetach() {
        super.onDetach();
        Log.d(TAG, "onDetach: ");
    }
}

运行后 logcat中:
Android开发—关于碎片(Fragment)的生命周期(十七)_第2张图片
之后点击Button:
由于页面发生替换,所以RightFragment进入停止状态,如果调用的时候没有调用上一节说到的 addToBackStack()方法,此时的RightFragment就会进入销毁状态,onDestroy()和onDetach()方法就会执行
logcat中:在这里插入图片描述
点击Back:
在这里插入图片描述

你可能感兴趣的:(android开发)