关于fragment的懒加载探析
这里涉及到的API有两个:
1. public void setUserVisibleHint(boolean isVisibleToUser)
百度搜索fragment的懒加载,往往能看到关于这个Api的介绍,大致浏览了几篇文章,主要内容有:
- setUserVisibleHint(boolean isVisibleToUser)这个方法在onCreateView()方法执行之前执行的,在setUserVisibleHint(boolean isVisibleToUser)中可以提前进行网络请求也就是所谓的懒加载。。。
- 需要注意的是这方法执行的时候,不能保证布局文件初始化,所以该方法内建议只能是纯数据获取操作。
- setUserVisibleHint(boolean isVisibleToUser)这个方法貌似只有使用ViewPager加载Fragment的时候,才会调用这个方法;创建一个容器,动态加载fragment,进行显示隐藏,这种方式这个方法不执行。(查看源码可以知道,这个方法是在FragmentPagerAdapter中进行调用参考 文章)
2. onHiddenChanged(hidden: Boolean)
- 当前mainActivity创建的时候,将所有Fragment都初始化创建对象,隐藏其他fragment,只显示其中一个fragment的时候,被隐藏的fragment会执行这个方法,且hidden=true,当被隐藏的fragment进行显示的时候该方法也会执行,hidden=false;
- 根据上面所述,当hidden==false的时候,进行数据获取可以做到每次显示当前fragment的时候,都会刷新数据。
参考 setUserVisibleHint1
参考 setUserVisibleHint2
参考 onHiddenChanged
参考 onHiddenChanged和setUserVisibleHint