Android学习笔记(六)Fragment的生命周期
2015-09-07 18:47
555 查看
在上一篇博文中对Fragment做了简单的介绍,现在再来探讨一下Fragment的生命周期。
一、Fragment的几种状态:
与Activity类似,Fragment也有一下几种状态:
· 活动状态:当前Fragment位于前台,可见,可获得焦点。
· 暂停状态:其他Activity位于前台,该Fragment可见,不可获得焦点。
· 停止状态:不可见,失去焦点。
· 销毁状态:该Fragment被完全删除或被结束。
二、Fragment的回调方法:
在Fragment的生命周期中,有一下方法会被回调:
· onAttach():当Fragment被添加到Activity时被回调,只回调一次。
· onCreate(Bundle savedStatus):创建Fragment时被回调,一次。
· onCreateView(): 每次创建、绘制该Fragment的View组件时回调,Fragment将会显示该方法返回的View组件。
· onActivityCreated():Fragment所在的Activity启动完成后回调。
· onStart():每次启动或恢复Fragment时被回调。
· onResume():每次启动或恢复Fragment时被回调,onStart()回调后就会回调此方法。
· onPause():暂停时回调。
· onStop():停止Fragment时回调。
· onDestroyView():销毁Fragment的View组件时回调。
· onDestroy():销毁Fragment时调用,一次。
· onDetach():将Fragment从Activity中删除、被替换完成时回到该方法,在onDestroy()之后回调。
根据以上方法被回调的时机,我们可以根据需要选择性的覆盖指定方法。从而实现相关需求。
三、Fragment生命周期实例
下面代码是Fragment生命周期的例子,重写了以上十一个生命周期方法:
下面我们来试验一下并看日志结果:
1、启动Fragment日志如下(请忽略黄色日志):
2、息屏状态下:
3、重新点亮屏幕:
4、退出:
其实还有更多的情况,着这里就不一一试验了。这个例子虽然很简单,但能很好的反映了Fragment生命周期中各方法的回调时机。
一、Fragment的几种状态:
与Activity类似,Fragment也有一下几种状态:
· 活动状态:当前Fragment位于前台,可见,可获得焦点。
· 暂停状态:其他Activity位于前台,该Fragment可见,不可获得焦点。
· 停止状态:不可见,失去焦点。
· 销毁状态:该Fragment被完全删除或被结束。
二、Fragment的回调方法:
在Fragment的生命周期中,有一下方法会被回调:
· onAttach():当Fragment被添加到Activity时被回调,只回调一次。
· onCreate(Bundle savedStatus):创建Fragment时被回调,一次。
· onCreateView(): 每次创建、绘制该Fragment的View组件时回调,Fragment将会显示该方法返回的View组件。
· onActivityCreated():Fragment所在的Activity启动完成后回调。
· onStart():每次启动或恢复Fragment时被回调。
· onResume():每次启动或恢复Fragment时被回调,onStart()回调后就会回调此方法。
· onPause():暂停时回调。
· onStop():停止Fragment时回调。
· onDestroyView():销毁Fragment的View组件时回调。
· onDestroy():销毁Fragment时调用,一次。
· onDetach():将Fragment从Activity中删除、被替换完成时回到该方法,在onDestroy()之后回调。
根据以上方法被回调的时机,我们可以根据需要选择性的覆盖指定方法。从而实现相关需求。
三、Fragment生命周期实例
下面代码是Fragment生命周期的例子,重写了以上十一个生命周期方法:
@SuppressLint("NewApi") public class MyFragment extends Fragment { Button bnOk; TextView tvShow; private final String TAG = "MyFragment"; public MyFragment(){ System.out.println(TAG + ":MyFragment()"); } @Override public void onAttach(Activity activity) { super.onAttach(activity); System.out.println(TAG + ":onAttach()"); } @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); System.out.println(TAG + ":onCreate()"); } //重写改方法,返回值View将作为Fragment显示的组件 @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { System.out.println(TAG + ":onCreateView()"); //加载fragment_main.xml布局文件 View rootView = inflater.inflate(R.layout.fragment_main, container, false); return rootView; } @Override public void onActivityCreated(Bundle savedInstanceState) { super.onActivityCreated(savedInstanceState); System.out.println(TAG + ":onActivityCreated()"); } @Override public void onStart() { super.onStart(); System.out.println(TAG + ":onStart()"); } @Override public void onResume() { super.onResume(); System.out.println(TAG + ":onResume()"); } @Override public void onPause() { super.onPause(); System.out.println(TAG + ":onPause()"); } @Override public void onStop() { super.onStop(); System.out.println(TAG + ":onStop()"); } @Override public void onDestroyView() { super.onDestroyView(); System.out.println(TAG + ":onDestroyView()"); } @Override public void onDestroy() { super.onDestroy(); System.out.println(TAG + ":onDestroy()"); } @Override public void onDetach() { super.onDetach(); System.out.println(TAG + ":onDetach()"); } }
下面我们来试验一下并看日志结果:
1、启动Fragment日志如下(请忽略黄色日志):
2、息屏状态下:
3、重新点亮屏幕:
4、退出:
其实还有更多的情况,着这里就不一一试验了。这个例子虽然很简单,但能很好的反映了Fragment生命周期中各方法的回调时机。
相关文章推荐
- android之屏幕适配之二实践切图适配不同的平板
- android点击两侧返回键退出应用
- Android中ListView的item按钮监听错乱问题解决办法 推荐
- android程序启动画面之Splash总结
- Android SDK开发包国内下载地址
- Android 之 下拉框(Spinner)的使用
- android状态栏一体化(改变状态栏的背景颜色)开源工程推荐
- Android Universal Image Loader 学习笔记(三)
- android activity 生命周期
- android 触摸事件、点击事件的区别
- Android Intent 用法全面总结
- Android json 解析
- Android Universal Image Loader 学习笔记(二)
- Android中的dispatchTouchEvent()、onInterceptTouchEvent()和onTouchEvent()
- Android 开发最佳实践
- android Activity launch mode 一个实例 singleInstance
- android――SharedPreferences存放数据
- Android SurfaceView 详解(三)
- Android SurfaceView 详解(二)
- Android SurfaceView 详解(一)