Fragment相关源码阅读笔记(3)FragmentManagerImpl

来源:互联网 发布:淘宝卖家规则 编辑:程序博客网 时间:2024/06/03 22:47
FragmentManagerImpl类是FragmentManager抽象类的具体实现,负责Fragment 的管理,主要有三方面的功能:
         1/Fragment管理,添加移除等(add/remove/replace/hide/show)
         2/事务管理,对Transactions的操作,addToBackStack和popBackStack
         3/与Activity生命周期的同步操作,dispatchXXXX
1.Fragment管理
在FragmentTransactions的实现类BackStackRecord中,add/replace/remove等方法只是把对应的操作命令存储在操作链表中,
在通过Handler调度的异步操作中调用BackStackRecord的run方法时 才真正进行Fragment相应操作
这里实际调用了FragmentManagerImpl的对应方法,FragmentManagerImpl维护Fragment的对应数据结构(线性表)
2.Fragment事务
FragmentManager抽象类定义BackStackEntry作为Fragment事务的抽象,BackStackRecord实现了该接口,FragmentManagerImpl管理BackStackRecord
相关线性表(栈)
3.与Activity同步
在Activity生命周期中有调用了FragmentController的DispatchXXX方法,实际会调用的FragmentManagerImpl的对应方法,实现了生命周期同步;但是Fragment生命周期并不是固定于Activity生命周期对应的,当我们在动态添加Fragment 的时候,如果在Activity的OnResume中进行FragmentTransActions的提交操作,Fragment在OnResume前的生命周期也会走一遍,生命周期毁掉的调用是在moveToState方法中根据当前Fragment状态以及目标状态确定的,由FragmentTransActio.commit()或dispatchXXXX方法触发
0 0
原创粉丝点击