Android番外篇 ViewPager.setOffscreenPageLimit()
Posted 彭老希
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Android番外篇 ViewPager.setOffscreenPageLimit()相关的知识,希望对你有一定的参考价值。
一、前言
问题缘由:ViewPager.
setOffscreenPageLimit
()设置的预加载数量
setOffscreenPageLimit() 方法设置的默认值是 1
(1)ViewPager 会预加载几页
(2)ViewPager 会缓存 2*n+1 页(n为设置的值)
如设置为n=1,当前在第一页,会预加载第二页,滑倒第二页,会预加载第三页,当滑倒第三页,第一页会销毁,第四页会加载。
所以ViewPager 中Fragment的生命周期:
setOffscreenPageLimit 的值影响的是
onViewDestory
方法
当缓存的 fragment 超过 setOffscreenPageLimit 设置的值后,那些 fragment 的onViewDestory 方法会回调
当然不想切换的时候去重新创建Fragment,可以将适配器FragmentPagerAdapter的方法重写就好
二、懒加载的实现
setOffscreenPageLimit方法的默认值为1
优点:Viewpage至少会预加载一页
缺点:比如当前页面有网络请求之类的,预加载的页面也有,就会导致许多任务在等待,影响当前页面的数据请求。
所以应该可见的时候去请求数据,本来想设置这个方法setOffscreenPageLimit的值为0 ,以为可以解决,但是查看了源码看到当设置为0或者负数的时候,都会返回的1,所以无效:
Fragment 里面有个方法 setUserVisibleHint
(boolean isVisibleToUser) 方法,这个方法可以判断当前页面是否对用户可见。
在这个方法里面具体去处理数据的加载就可以了
以上是关于Android番外篇 ViewPager.setOffscreenPageLimit()的主要内容,如果未能解决你的问题,请参考以下文章
Android番外篇 RecyclerView 移除飞行效果动画
Apache Cordova开发Android应用程序——番外篇
Android番外篇 Glide获取图片PathBitmap用法详解