Fragment + ViewPager(appcompat)
Fragment生命周期变化
首次加载
- HomeFragment: setUserVisibleHint: false
- QuoteFragment: setUserVisibleHint: false
- HomeFragment: setUserVisibleHint: true
- HomeFragment: onAttach
- HomeFragment: onCreate
- QuoteFragment: onAttach
- QuoteFragment: onCreate
- HomeFragment: onViewCreated
- HomeFragment: onActivityCreated
- HomeFragment: onStart
- HomeFragment: onResume
- QuoteFragment: onViewCreated
- QuoteFragment: onActivityCreated
- QuoteFragment: onStart
- QuoteFragment: onResume
点击第二个Fragment
- TradeFragment: setUserVisibleHint: false
- HomeFragment: setUserVisibleHint: false
- QuoteFragment: setUserVisibleHint: true
- TradeFragment: onAttach
- TradeFragment: onCreate
- TradeFragment: onViewCreated
- TradeFragment: onActivityCreated
- TradeFragment: onStart
- TradeFragment: onResume
- Fragment: Main Page Selected: 1
点击第四个Fragment
- MyFragment: setUserVisibleHint: false
- FinanceFragment: setUserVisibleHint: false
- QuoteFragment: setUserVisibleHint: false
- MyFragment: setUserVisibleHint: true
- MyFragment: onAttach
- MyFragment: onCreate
- FinanceFragment: onAttach
- FinanceFragment: onCreate
- MyFragment: onViewCreated
- MyFragment: onActivityCreated
- MyFragment: onStart
- MyFragment: onResume
- FinanceFragment: onViewCreated
- FinanceFragment: onActivityCreated
- FinanceFragment: onStart
- FinanceFragment: onResume
- Fragment: Main Page Selected: 4
- TradeFragment: onPause
- TradeFragment: onStop
- QuoteFragment: onPause
- QuoteFragment: onStop
- HomeFragment: onPause
- HomeFragment: onStop
点击第一个Fragment
- HomeFragment: setUserVisibleHint: false
- QuoteFragment: setUserVisibleHint: false
- MyFragment: setUserVisibleHint: false
- HomeFragment: setUserVisibleHint: true
- HomeFragment: onViewCreated
- HomeFragment: onActivityCreated
- HomeFragment: onStart
- HomeFragment: onResume
- QuoteFragment: onViewCreated
- QuoteFragment: onActivityCreated
- QuoteFragment: onStart
- QuoteFragment: onResume
- Fragment: Main Page Selected: 0
- FinanceFragment: onPause
- FinanceFragment: onStop
- MyFragment: onPause
- MyFragment: onStop
退出页面
- HomeFragment: onDestroy
- HomeFragment: onDetach
- QuoteFragment: onDestroy
- QuoteFragment: onDetach
- TradeFragment: onDestroy
- TradeFragment: onDetach
- MyFragment: onDestroy
- MyFragment: onDetach
- FinanceFragment: onDestroy
- FinanceFragment: onDetach
小结:
- 支持预加载布局,可根据业务需要预加载数据
- userVisible = true并且onResume才是可见
- userVisible = false(首次创建触发)才是不可见
- attach之后的Fragment不会被detach,直到页面销毁才会被detach,即Fragment可复用
- Fragment中View默认不能复用
- 最多只有三个Fragment同时处于onResume状态,分析是为了实现左右滑动预览的功能
- 不建议Fragment + ViewPager再次嵌套Fragment + ViewPager,生命周期过于复杂,因为预加载一级中不显示的Fragment时,会预加载二级的第一个Fragment和第二个Fragment,如果嵌套过深,可想而知会预加载多少不可见的Fragment
来源:oschina
链接:https://my.oschina.net/u/219974/blog/4471342