碎片的生命周期

作者: TTTqiu | 来源:发表于2016-04-22 11:39 被阅读124次

一、碎片状态


1. 运行状态

当一个碎片是可见的,并且它所关联的活动正处于运行状态时,该碎片也处于运行状态。

2. 暂停状态

当一个活动进入暂停状态时(由于另一个未占满屏幕的活动被添加到了栈顶),与它相关联的可见碎片就会进入到暂停状态。

3. 停止状态

  • 当一个活动进入停止状态时,与它相关联的碎片就会进入到停止状态。
  • 或者通过调用 FragmentTransaction 的 remove()、replace() 方法将碎片从活动中移除,但有在事务提交之前调用 addToBackStack() 方法,这时的碎片也会进入到停止状态。
  • 总的来说,进入停止状态的碎片对用户来说是完全不可见的,有可能会被系统回收。

4. 销毁状态

  • 碎片总是依附于活动而存在的,因此当活动被销毁时,与它相关联的碎片就会进入到销毁状态。
  • 或者通过调用 FragmentTransaction 的 remove()、replace() 方法将碎片从活动中移除,但在事务提交之前并没有调用 addToBackStack() 方法,这时的碎片也会进入到销毁状态。

二、碎片的回调方法


活动中有的回调方法,碎片中几乎都有,不过碎片还提供了一些附加的回调方法。

1. onAttach()

当碎片和活动建立关联的时候调用。

2. onCreateView()

为碎片创建视图(加载布局)时调用。

3. onActivityCreated()

确保与碎片相关联的活动一定已经创建完毕的时候调用。

4. onDestroyView()

当与碎片关联的视图被移除的时候调用。

5. onDetach()

当碎片和活动解除关联的时候调用。


三、碎片的完整生命周期



四、代码


public class RightFragment extends Fragment {
    public static final String TAG = "RightFragment";
    @Override
    public void onAttach(Activity activity) {
        super.onAttach(activity);
        Log.d(TAG, "onAttach");
    }
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        Log.d(TAG, "onCreate");
    }
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        Log.d(TAG, "onCreateView");
        View view = inflater.inflate(R.layout.right_fragment, container, false);
        return view;
    }
    @Override
    public void onActivityCreated(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");
    }
}

五、保存临时数据


在碎片中也是可以通过 onSaveInstanceState() 方法来保存数据的,因为进入停止状态的碎片有可能在系统内存不足的时候被回收。保存下来的数据在 onCreate()、onCreateView() 和 onActivityCreated() 这三个方法中你都可以重新得到,它们都含有一个 Bundle 类型的 savedInstanceState 参数。

相关文章

  • 安卓之碎片Fragment

    碎片介绍 碎片使用方式 碎片生命周期 碎片界面滑动 碎片介绍碎片是一种可以嵌入在活动当中的UI片段,它能让程序更加...

  • 第一行代码读书笔记 4 -- 探究碎片

    本篇文章主要介绍以下几个知识点:碎片 fragment 的用法;碎片 fragment 的生命周期;动态加载布局的...

  • 代码总结(上)---活动,碎片和广播

    碎片部分 碎片的生命周期 1运行状态 当一个碎片是可见的,并且与其关联的活动正处于运行状态,那么这个碎片也处于运行...

  • 第四章--探究碎片

    1.碎片的使用 建议引用support.v4包 事物替换 2.碎片的生命周期 注:建立一个demo,进行碎片的替换...

  • 碎片的生命周期

    一、碎片状态 1. 运行状态 当一个碎片是可见的,并且它所关联的活动正处于运行状态时,该碎片也处于运行状态。 2....

  • 2018-09-08 碎片知识要点

    1.碎片的生命周期 碎片的使用时依附于活动之上的,首先创建一个布局,然后创建一个碎片类,在这个碎片类中加载创建好了...

  • Fragment

    1.碎片(Fragment) 一种可以嵌入在活动中的 UI 片段, 2.生命周期: 2.1 碎片的状态和回调 运行...

  • Android 03.Fragment应用

    Fragment(碎片) Fragment应用上 应用场景 静态使用 xml 动态使用 逻辑代码 生命周期 ---...

  • Fragment 笔记

    常用的一些方法 生命周期 参考 郭霖大神的 CSDN 、Android Developer 简介 碎片、片段,Fr...

  • 安卓开发

    今天学习了碎片的生命周期以及碎片的各个知识。今天看的是偏理论的,很难理解,因为在机器上很难实现。也百度了相关的知识...

网友评论

    本文标题:碎片的生命周期

    本文链接:https://www.haomeiwen.com/subject/gfcxrttx.html