Android Fragments详解六:处理fragmenst的生命周期
来源:互联网 发布:mysql update join on 编辑:程序博客网 时间:2024/04/27 17:10
管理fragment的生命周期有些像管理activity的生命周期。Fragment可以生存在三种状态:
Resumed:
Fragment在一个运行中的activity中并且可见。
Paused:
另一个activity处于最顶层,但是fragment所在的activity并没有被完全覆盖(顶层的activity是半透明的或不占据整个屏幕)。
Stoped:
Fragment不可见。可能是它所在的activity处于stoped状态或是fragment被删除并添加到后退栈中了。此状态的fragment仍然存在于内存中。
同样类似于activity,你可以把fragment的状态保存在一个Bundle中,在activity被recreated时就需用到这个东西。你可以在onSaveInstanceState()方法中保存状态并在onCreate()或onCreateView()或onActivityCreated()中恢复,关于更多的保存状态的信息,请参考Activitys章节。
Fragment与Activity的生命周期中最大的不同就是存储到后退栈中的过程。Activity是在停止时自动被系统压入停止栈,并且这个栈是被系统管理的;而fragment是被压入activity所管理的一个后退栈,并且只有你在删除fragment后并明确调用addToBackStack()方法时才被压入。
然而,管理fragment的生命周期与管理activity的生命周期极其相似。你所需要去思考的是activity的生命周期如何影响fragment的生命周期。
协调与activity生命周期的关系
Activity直接影响它所包含的fragment的生命周期,所以对activity的某个生命周期方法的调用也会产生对fragment相同方法的调用。例如:当activity的onPause()方法被调用时,它所包含的所有的fragment们的onPause()方法都会被调用。
Fragment比activity还要多出几个生命周期回调方法,这些额外的方法是为了与activity的交互而设立,如下:
onAttach()
当fragment被加入到activity时调用(在这个方法中可以获得所在的activity)。
onCreateView()
当activity要得到fragment的layout时,调用此方法,fragment在其中创建自己的layout(界面)。
onActivityCreated()
当activity的onCreated()方法返回后调用此方法。
onDestroyView()
当fragment的layout被销毁时被调用。
onDetach()
当fragment被从activity中删掉时被调用。
一旦activity进入resumed状态(也就是running状态),你就可以自由地添加和删除fragment了。因此,只有当activity在resumed状态时,fragment的生命周期才能独立的运转,其它时候是依赖于activity的生命周期变化的。
- Android Fragments详解六:处理fragmenst的生命周期
- android Fragments详解六:处理fragement的生命周期
- android Fragments详解六:处理fragement的生命周期
- android Fragments详解六:处理fragement的生命周期
- android Fragments详解六:处理fragement的生命周期 .
- android Fragments详解六:处理fragement的生命周期
- android Fragments详解六:处理fragement的生命周期
- android Fragments详解六:处理fragement的生命周期
- android Fragments详解六:处理fragement的生命周期
- android Fragments详解:处理fragement的生命周期
- Fragments六:处理fragement的生命周期
- Fragments生命周期详解
- Fragments碎片的生命周期
- Android Fragments 与 Activity 生命周期之间的关系
- android Fragments详解
- android Fragments详解
- android Fragments详解
- android Fragments详解
- 工商银行银联标准芯片卡
- 查看某张表的备份表中的数据与此表本身在某个时间节点的数据量是否一致
- Javascript中的几种作用域
- VISA招商银行全币种国际芯片卡
- Linux内核 RPS/RFS功能详细测试分析
- Android Fragments详解六:处理fragmenst的生命周期
- Python 类继承,__bases__, __mro__, super
- oracle主机ip修改无法正常启动,报错:ORA-00600:internal error code
- java设计模式之中介者模式
- HDU 5008 Boring String Problem 后缀数组
- 虚方法【只有虚方法或者抽象方法才能被子类方法重写】
- 常用代码段Android Shortcut操作(快捷方式)
- 【北京站】IT运维免费培训火爆进行时,还有惊喜礼品哦~
- poj 2082——Terrible Sets