Fragment 各种状态下的生命周期
来源:互联网 发布:淘宝店铺音乐要钱吗 编辑:程序博客网 时间:2024/06/07 00:40
Fragment 各种状态下的生命周期
- Fragment 各种状态下的生命周期
- 静态添加
- 添加步骤
- 生命周期
- 初始化
- Back键
- 点击Home键
- 多任务键返回
- 点击Home被杀死
- 初始化
- 动态添加
- add remove replace
- add
- remove
- replace
- show hide
- attach detach
- attach
- detach
- add remove replace
- 总结
- 添加到 back stack
- ViewPager
- 添加到 FragmentPagerAdapter
- 添加到 FragmentStatePagerAdapter
- 总结
- 静态添加
先扔出生命周期图
关于 Fragment 请参考官网
静态添加
添加步骤
在xml布局中使用 <fragment>
标签,在activity:name属性中添加对应Fragment
需要注意的是:
fragment 必须要有唯一标示 三者任选其一
- android:id 属性
- android:tag 属性
- 如果没有则会自动选取 选取容器的id,如果容器也没有id 则会抛出RuntimeException
生命周期
初始化
Activity: onCreate
Fragment: onAttach
Fragment: onCreate
Fragment: onCreateView
Fragment: onAtivityCreated
Fragment: onStart
Activity: onStart
Activity: onResume
Fragment: onResume
可以看出 Fragment 是跟随setContentView 生成的
Back键
Fragment: onPause
Activity: onPause
Fragment: onStop
Activity: onStop
Fragment: onDestoryView
Fragment: onDestory
Fragment: onDestach
Activity: onDestory
点击Home键
Fragment: onPause
Activity: onPause
Fragment: onStop
Activity: onStop
多任务键返回
Activity: onRestart
Fragment: onSstart
Activity: onResume
Fragment: onResume
点击Home被杀死
重新走生命周期了,这个先不详细讨论
动态添加
通过代码将 Fragment
添加到现有的ViewGroup
中
通过 FragmentManager
管理 fragment
通过FragmentTransaction
事务提交的方式 add
,remove
,replace
,show
,hide
,attach
,detach
add remove replace
add
Fragment: onAttach
Fragment: onCreate
Fragment: onCreateView
Fragment: onActivityCreated
Fragment: onStart
Fragment: onResume
remove
Fragemnt: onPause
Fragment: onStop
Fragment: onDestoryView
Fragment: onDestory
Fragment: onDetach
replace
replace = add + remove
remove replace 方式会导致生命周期重启,所有用户数据会丢失
show & hide
不走生命周期,实例保存
attach & detach
attach
Fragment: onCreateView
Fragment: onActivityCreated
Fragment: onStart
Fragment: onResume
没有onCreate 方法
detach
Fragment: onPause
Fragment: onStop
Fragment: onDestoryView
总结
因为 add remove replace 都会重新走生命周期所以不需要保存用户状态就直接 使用 add
removew
replace
添加和替换就可以了
如果需要保存用户状态 用 show
hide
添加到 back stack
当Fragment 添加到 back stack 中生命周期会受到影响
点击button添加到 back stack
Fragment: onAttach
Fragment: onCreate
Fragment: OnCreateView
Fragment: onActivityCreated
Fragment: onStart
replace addToBackStack
Fragment: onPause
Fragment: onStop
Fragment: onDestoryView
不会 onDestory onDetach
点击返回键
Fragment: onCreateView
Fragment: onActivityCreated
Fragment: onStart
Fragment: onResume
不会走 onAttach onCreated
ViewPager
添加到 FragmentPagerAdapter
一般使用ViewPager
使用 FragmentPagerAdapter
,FragmentPagerAdapter
使用 FragmentManager
管理Fragment
,每个访问过的 Fragment
都会存在内存中
三个 Fragmetn
的例子
启动
fragment01
处于屏幕
切换
fragment02
处于屏幕
可以看出切换到中部三个 Fragment
都处于onResume状态
再切换 fragment03
处于屏幕
当第三个 fragment03
显示在屏幕上,第一个 fragment01
onDestoryView
再次切换 fragment02
处于屏幕
fragment01
处于 onResume
可以看出只是 执行 onCreateView
-> onActivityCreated
-> onStart
-> onResume
没有执行 onAttach
onCreate
onCreateView
添加到 FragmentStatePagerAdapter
过程和 FragmentPagerAdapter 一样 看图吧
切换
切换
切换
总结
一般静态添加少量 Fragment
用 FragmentPagerAdapter
动态大量添加 Fragment
用 FragmentStatePagerAdapter
代码放在了 github
- Fragment 各种状态下的生命周期
- 在ViewPager中的Fragment在各种状态下的生命周期
- Fragment 在各种情况下的生命周期
- 套在ViewPagerz中的Fragment在各种状态下的生命周期
- FragmentTransaction管理的Fragment生命周期状态
- FragmentTransaction管理的Fragment生命周期状态
- Fragment在不同情况下的生命周期
- Fragment在不同情况下的生命周期
- Fragment生命周期的说明以及状态的保存
- Tab+Fragment异常生命周期下产生的fragment重影问题
- Activity锁屏状态下的生命周期
- iOS -- 应用程序生命周期(前后台切换,应用的各种状态)
- Linux下进程的各种状态
- 关于Fragment的生命周期
- Fragment的生命周期
- 3.2 Fragment的生命周期
- Fragment的生命周期
- Fragment的生命周期初识
- leetcode_75. Sort Colors题解
- 台州学院ACM:2506 An escape
- .htaccess 配置详解
- Freefloat FTP Server 1.0 溢出漏洞分析
- SpringCache(Spring使用Cache)
- Fragment 各种状态下的生命周期
- linux下安装php扩展memcache的方法
- arrayList, StringBuilder扩容的问题
- 电源篇-集成三端稳压器
- Codeforces #380(Div.2)A.Interview with Oleg【模拟】水题
- 三、Listener介绍
- 我的设计模式-适配器(Adapter)
- 在js中循环语句for in和for的用法
- 【Android图像处理】羽化滤镜(效果)