《第一行代码Android》学习总结第四章 Fragment的运行状态与生命周期

本文总结了Android中Fragment的四种状态及其转换:运行、暂停、停止和销毁,并详细解析了Fragment的生命周期方法,如onAttach()、onCreate()、onCreateView()等。此外,介绍了如何在Fragment中保存状态以及动态加载布局的技巧,利用限定符适应不同设备屏幕。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、Fragment四种状态

1、运行状态

当一个Fragment是可见的,同时它所关联的Activity正处于运行状态,则该Fragment也处于运行状态。

2、暂停状态

当一个Activity处于暂停状态,与它关联的可见碎片就会处于暂停状态。

3、停止状态

    Fragment不可见,有可能被系统回收。

1)当一个Activity处于停止状态,与它关联的可见碎片就会处于停止状态。

2)通过调用FragmentTransaction的remove()、replace()方法将Fragment从活动中移除,但如果在事务提交之前调用addToBackStack()方法,此时Fragment也会进入停止状态。

4、销毁状态

1)当一个Activity处于销毁状态,与它关联的可见碎片就会处于销毁状态。

2)通过调用FragmentTransaction的remove()、replace()方法将Fragment从活动中移除,但如果在事务提交之前并没有调用addToBackStack()方法,此时Fragment也会进入销毁状态。

二、Fragment的生命周期

onAttach()onAttach()回调将在Fragment与其Activity绑定关联之后调用。

onCreate()初始化Fragment

onCreateView()初始化Fragment的布局,加载布局和findViewById的操作通常在此函数内完成,不建议执行耗时的操作。

onActivityCreated()onActivityCreated()回调会在Activity完成其onCreate()回调之后调用。

onStart()Fragment变为可见状态。

onResume()执行该方法时,用户可与之交互

onPause()暂停,可见但不能交互

onSaveInstanceState()保存当前Fragment的状态

onStop()执行该方法时,Fragment完全不可见。

onDestroyView()销毁与Fragment有关的视图,但未与Activity解除绑定,依然可以通过onCreateView方法重新创建视图。通常在ViewPager+Fragment的方式下会调用此方法。

onDestroy()销毁Fragment。通常按Back键退出或者Fragment被回收时调用此方法。

onDetach()解除与Activity的绑定。在onDestroy方法之后调用。

        在碎片中同样可以运用onSaveInstanceState()方法来保存数据,因为在进入停止状态的Fragment有可能在系统内存不足时被回收。保存下来的Bundle类型的数据saveInstanceStateonCreate()onCreateView()onActivityCreated()三个方法中使用。

 

三、动态加载布局的技巧

        Android可以使用限定符让程序根据设备的分辨率或屏幕大小在运行时来决定加载哪一个布局。

1layout文件夹中存在activity_main.xml布局,同时在res目录下建立layout-large文件夹,在该文件夹下新建另一个同名布局activity_main.xml

2、其中large为一个限定符,那些屏幕被认为large的设备会自动加载layout-large文件夹下的布局,而小屏幕仍会加载layout文件夹下的activity_main.xml布局

Android中常见限定符:

最小宽度限定符:

        允许对屏幕宽度指定一个最小值,以该最小值为临界点,屏幕宽度大于该值的设备加载一个布局,屏幕宽度小于该值的设备加载另一个布局。

        例:在res目录下新建layout-sw600dp文件夹。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值