一、简介
本篇带你体验碎片的生命周期。
二、实验平台
系统版本: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 参数。