Fragment 操作原理

fragment 本质

fragment 本质上是 view 的容器和控制器,fragment 是 activity 的碎片。

activity 是什么呢?activity 是四大组件之一,4大组件是 android 系统的组成部件,因为 LMK(Low Memery Killer)机制,4 大组件就是我们提供给用户的功能的载体,4 大组件还是我们提供给用户的功能的入口。Activity Service BroadcastReceiver ContentProvider,Activity 是带用户界面的这些功能的载体,Service 是不带用户界面的功能的载体。和 Service 比较,Activity 相当于 MVC 中的 View。但我们把 Activity 剖析开来理解,Activity 承担了 View 控件的容器和控制器功能。Activity 还承担了 View 控件的数据的容器的功能。

fragment 除了不是系统组件外,拥有其他所有 Activity 的功能。fragment 的存在就是对 activity 的功能进行拆分,降低 activity 的负担,减少 activity 中的代码量。

fragment 还有对 fragment 中的 view 的状态进行保持的能力,需要保持的 view 必须设置 id,否则不能保存 view 的状态。

FragmentTransaction 的 add、remove、replace、hide、show 操作

FragmentTransaction 的 add、remove、replace、hide、show 操作本质上是对 fragment 中的 view 树进行 add、remove、hide、show 操作

  • add 是把 fragment 中的 view 树添加到容器 viewgroup 中,相当于 viewgroup.addview();
  • remove 是把 fragment 中的 view 树对象从容器 viewgroup 中移除,相当于 viewgroup.removeView();
  • replace 是 add 操作和 remove 操作的合体,相当于先 remove 掉 viewgroup 容器中所有的 fragment,再添加新的 fragment 对象。replace 有个 bug,remove 的时候如果 viewgroup 容器中有多个 fragment,比如 1、2、3、4、5、6,只移除1、3、5这些序号为奇数的 fragment,这个 bug 是 v4 包中的 bug,到目前版本 level 23 仍然没有修复
  • hide 操作相当于设置 fragment 对应的 view 为 gone
  • show 操作相当于设置 fragment 对应的 view 为 visible

FragmentTransaction 的 addToBackStack 功能

addToBackStack 是把该事务所有操作构成的操作集合都添加到 FragmentManager 对象的后退任务栈中,作为任务栈中的一个元素,当我们按 back 键的时候进行该操作集合构成的元素进行的逆向操作,一次弹出一个元素,主动调用 FragmentManager.popBackStack 方法也可以进行一个弹栈操作。

Fragment 操作原理

fragment 的 add 操作到底是怎么实现的?通过查看源码,fragment 的 add 操作主要要做下面的事情:
1. 通过 activity 获取到 FragmentManager 对象,这里会 new 一个 Fragment

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值