学习笔记(六)探究碎片 Fragment 之二

三. 碎片的生命周期

1. 运行状态

  当一个碎片是可见的,并且它所关联的活动正处于运行状态时,该碎片也处于运行状态。

2. 暂停状态

  当一个活动进入暂停状态时。与它相关联的可见碎片就会进入到暂停状态。

3. 停止状态

  当一个活动进入停止状态时,与它相关联的碎片就会进入到停止状态。或者通过调用 FragmentTransaction 的remove()replace()方法将碎片从活动中移除,但有在事务提交之前调用 addToBackStack()方法,这时的碎片也会进入到停止状态。

4. 销毁状态

  碎片总是依附于活动而存在的,因此活动被销毁时,与它相关联的碎片就会进入到销毁状态。或者通过调用 FragmentTransaction 的remove()replace()方法将碎片从活动中移除,但有在事务提交之前没有调用 addToBackStack()方法,这时的碎片也会进入到销毁状态。

5. 回调方法

  活动中有的回调方法,碎片中都有,碎片还提供了一些附加的回调方法:

  • onAttach()
    活动和碎片建立关联
  • onCreateView()
    为碎片创建视图
  • onActivityCreated()
    当与碎片关联的活动已经创建完毕的时候调用
  • onDestroyView()
    移除与碎片关联的视图
  • onDetach()
    活动和碎片解除关联

这里写图片描述

onAttach()//当一个Fragment对象关联到一个Activity时调用。
onCreate()//初始创建Fragment对象时调用。
onCreateView()//创建与Fragment对象关联的View视图时调用。
onActivityCreated()//当Activity对象完成自己的onCreate方法时调用。
onStart()//Fragment对象在UI可见时调用。
onResume()//Fragment对象的UI可以与用户交互时调用。
onPause()//Fragment对象可见,但不可交互。有Activity对象转为onPause状态时调用。
onStop()//有空间完全遮挡;或者宿主Activity对象转为onStop状态时调用。
onDestroyView()//Fragment对象清理view资源时调用,也就是移除Fragment中的视图。
onDestroy()//Fragment对象完成对象清理View资源时调用。
onDetach()//Fragment对象没有与Activity对象关联时调用。

  当一个 Fragment 被创建的时候执行 1-4;

  当这个 Fragment 创建完毕,到对用户可见的时候,执行 5-6;

  当这个 Fragment 从可见到不可见时,执行 7-9;

  当这个 Fragment 重新回到运行状态,执行 4-6。注意此时如果借助了addToBackStack()方法使得 Fragment 和它的视图并没有销毁,那么 2、3 并不会执行。

  当这个 Fragment 被销毁了(或者持有它的 Activity 被销毁了),执行 10-11;

  另外在碎片中也是可以通过onSaveInstanceState()方法来保存数据的,保存下来的数据在 2、3、4 这三个方法中可以重新得到,它们都含有一个 Bundle 类型的 savedInstanceState 参数。
  

四. 限定符 Qualifiers

  如何在运行时判断程序应该使用双页模式还是单页模式?
  layout/activity_main.xml 与
  layout-large/activity_main.xml,其中 large 就是一个限定符,那些屏幕被认为是 large 的设备就会自动加载 layout-large 文件夹下的布局。
  
  最小宽度限定符 Smallest-width Qualifier:
  layout-sw600dp/activity_main.xml,当程序运行在屏幕宽度大于 600dp 的设备上时,会自动加载该布局。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值