前言:图突发现好久没用认真总结过东西了。从元旦以来去上海出差一个多月,过年之后就去了行方的项目现场,就开始了没有外网的苦逼日子。Fragment是经常使用的,就总结下吧。该文为Fragement学习的第一篇,主要讲述Fragment的生命周期。由于Fragment依附于Activity存在,其生命周期也依附于Activity。官方文档上指出:一个Fragment可以用于不同方式来实现各种效果。但是它的核心,表示在一个较大的Activity运行的特定操作的一块区域。 Fragment与它所在的Activity密切相关,并且是不能脱离Activity使用的。虽然Fragment定义了自己的生命周期,其周期是依赖于它所在的Activity,如果Activity停止时,它的内部没有Fragment可启动,当Activity销毁后,所有的Fragment将被销毁。那么在讲述Fragment生命周期前首先回顾下Activity的生命周期。
一、 Activity生命周期回顾
Activity生命周期 | 说明 |
onCreate | 当Activity可视的时候调用 |
onStart | 当Activity可视的时候调用 |
onResume | 当用户可以和该Activity交互的时候调用(得到焦点) |
onPause | 当Activity被覆盖的时候会调用(失去焦点) |
onStop | 当Activity不可见的时候调用 |
onRestart | 当Activity从后台重新回到前台的时候回调 |
onDestroy | 当Activity被销毁的时候会调用 |
1. Activity启动
Activity启动调用顺序 onCreat() ==> onStart() ==> onResume()
2. 启动其他Activity或者按下Home按键
启动其他Activity或者按下Home按键调用顺序 onPause() ==> onStop()
3. Activity回到前台
Activity由后台回到前台显示调用顺序 onRestart() ==> onStart() ==> onResume()
4. 横竖屏切换
横竖屏切换 调用顺序 onPause() ==> onStop() ==> onDestory() ==> onCreat() ==> onStart() ==> onResume()
5. 退出Activity
Activity退出 调用顺序 onPause() ==> onStop() ==> onDestory()
二、 Fragment生命周期
Fragment生命周期 | 说明 |
onAttach | 当Fragment第一次添加到Activity的时候调用 |
onCreate | 当Fragment初始创建的时候调用 |
onCreateView | 当Fragment实例化用户界面视图的时候调用 |
onActivityCreated | 当Fragment所在Activity已创建而且该视图实例化后调用 |
onStart | 当Fragment可视的时候调用 |
onResume | 当Fragment可以交互的时候调用 |
onPause | 当Fragment被覆盖的时候会调用(失去焦点) |
onStop | 当Fragment不可见的时候调用 |
onDestroyView | 当Fragment内容被销毁的时候回调 |
onDestroy | 当Fragment被销毁的时候会调用 |
onDetach | 当Fragment在Activity移除的时候会调用 |
把Fragment的生命周期与Activity对应起来比较一下:
1. Fragment启动
Activity的启动即对应这Fragment的启动到可以与用户进行交互,调用顺序为: onAttach() ==> onCreat() ==> onCreatView() ==> onActivityCreated() ==> onStart() ==> onResume()
2. 按下Home按键
3. Fragment回到前台
4. 横竖屏切换
5. 退出Fragment
三、 Fragment与Activity生命周期对照
四、 总结
这一篇主要讲解了Fragment与Activity的生命周期关系,以便在后续使用Fragment的时候能够灵活运用这些周期的回调方法为我们服务。五、 下载传送
Fragment生命周期示例程序