碎片的生命周期

碎片的生命周期

 

碎片的运行状态分为4个状态

  • 运行状态:当碎片处于可见状态,并且与之相关的活动也处于运行状态时,碎片也处于运行状态。
  • 暂停状态:当一个活动进入暂停状态(由于另一个并未占满整个屏幕的活动被加到栈顶)的时候,与它相关联的可见碎片就会进入到暂停状态。
  • 停止状态:当一个活动处于停止状态,那么与之相关联的碎片也会处于停止状态,或者通过FragmentManager的remove(),replace() 方法将碎片从活动中移除,如果在事务提交之前调用FragmentManager.addBackToStack()方法,当前的碎片会进入停止状态。总的来说进入停止状态的碎片是完全不可见的,会随时被系统回收。
  • 销毁状态:碎片总是依附于活动而存在的,如果活动处于销毁状态,那么与之相关的碎片也会处于销毁状态, 或者通过FragmentManager的remove(),replace()方法将碎片从活动中移除,并且在事务提交之前并没有调用addBackToStack()方法的话,该碎片也会进入销毁状态。

与Activity类似,Fragment类也提供了一些回调方法,贯穿了碎片的整个生命周期,fragment类几乎包含了活动的所有方法,同时也附加了一写方法:

  • onAttach(): 当碎片与活动建立关联的时候调用。
  • onCreateView(): 为碎片创建视图(加载布局)调用。
  • onActivityCreated(): 确保与碎片相关联的活动一定已经创建完成后调用。
  • onDestoryView(): 当与碎皮相关联的视图被销毁时调用。
  • OnDetach(): 当碎片与活动取消关联时调用。


示例图:




可以利用上一篇《Fragment的案例解析》的碎片类改动后,运行观察碎片类的生命周期。改动后的类如下所示:


public class RightFragment extends Fragment {

     public static  final String TAG="RightFragment";

    @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(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
        View view= inflater.inflate(R.layout.right_fragment, container, false);
        Log.d(TAG, "onCreateView: ");
        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: ");
    }
}


  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值