【Android】55、体验碎片的生命周期

一、简介

本篇带你体验碎片的生命周期。


二、实验平台
系统版本:Windows7 家庭普通版 32位操作系统。

三、版权声明
博主:思跡
声明:喝水不忘挖井人,转载请注明出处。
原文地址:http://blog.csdn.net/omoiato

联系方式:315878825@qq.com

Java零基础入门交流群:541462902


四、体验碎片的生命周期

我们通过一个例子来体验碎片的生命周期。


修改RightFragment 中的代码,如下所示:

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");
    }
}


1、在RightFragment 中的每一个回调方法里都加入了打印日志的代码


2、重新运行程序,这时观察LogCat 中的打印信息



当RightFragment 第一次被加载到屏幕上时,会依次执行onAttach()、onCreate()、

onCreateView()、onActivityCreated()、onStart()和onResume()方法。


3、点击LeftFragment 中的按钮


由于AnotherRightFragment 替换了RightFragment,

此时的RightFragment 进入了停止状态,因此onPause()、onStop()和onDestroyView()方法会得到执行。

如果在替换的时候没有调用addToBackStack()方法,

此时的RightFragment 就会进入销毁状态,

onDestroy()和onDetach()方法就会得到执行。

4、按下Back 键,RightFragment 会重新回到屏幕



由于RightFragment 重新回到了运行状态, 因此onActivityCreated() 、

onStart() 和onResume()方法会得到执行。

注意此时onCreate()和onCreateView()方法并不会执行,

因为我们借助了addToBackStack()方法使得RightFragment 和它的视图并没有销毁。

5、再次按下Back 键退出程序


依次会执行onPause()、onStop()、onDestroyView()、onDestroy()和onDetach()方法,

最终将活动和碎片一起销毁。




另外值得一提的是,在碎片中你也是可以通过onSaveInstanceState()方法来保存数据的,
因为进入停止状态的碎片有可能在系统内存不足的时候被回收。

保存下来的数据在onCreate()、onCreateView()和onActivityCreated()这三个方法中你都可以重新得到,

它们都含有一个Bundle 类型的savedInstanceState 参数。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值