Android实战开发篇 ViewPager+Fragment 取消预加载
Posted 彭老希
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Android实战开发篇 ViewPager+Fragment 取消预加载相关的知识,希望对你有一定的参考价值。
一、Fragment的两个方法
- void setUserVisibleHint(boolean isVisibleToUser)
- boolean getUserVisibleHint()
二、方法介绍
setUserVisibleHint
:在onCreate方法和onCreateView方法之间执行的一个方法,同时该方法也是Fragment显示的时候执行
getUserVisibleHint
:获得Fragment的可见状态
public abstract class BaseFragment extends Fragment {
/** Fragment当前状态是否可见 */
protected boolean isVisible;
@Override
public void setUserVisibleHint(boolean isVisibleToUser) {
super.setUserVisibleHint(isVisibleToUser);
if(getUserVisibleHint()) {
isVisible = true;
onVisible();
} else {
isVisible = false;
onInvisible();
}
}
/**
* 可见
*/
protected void onVisible() {
lazyLoad();
}
/**
* 不可见
*/
protected void onInvisible() {
}
/**
* 延迟加载
* 子类必须重写此方法
*/
protected abstract void lazyLoad();
}
三、使用
public class ActivityPageFragment extends BaseFragment{
//首先执行该方法
@Override
protected void lazyLoad() {
if (!isVisible ) {
return;
}
//在这里对所需数据进行加载
new LoadActivityListAsyncTask().execute(Const.REFRESH_INDEX);
new PrizeListAsyncTask().execute();
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle
savedInstanceState) {
return inflater.inflate(R.layout.fragment_activity_page, container, false);
}
ViewPager.setOffscreenPageLimit(int limit)
,其中参数可以设为0或者1,参数小于1时,会默认用1来作为参数,未设置之前,ViewPager会默认加载两个Fragment。
四、关闭预加载
mViewPager = (ViewPager) findViewById(R.id.fl_tabcontent);
mViewPager.setOffscreenPageLimit(1);//关闭预加载,默认一次只加载一个Fragment
以上是关于Android实战开发篇 ViewPager+Fragment 取消预加载的主要内容,如果未能解决你的问题,请参考以下文章
Android开发之漫漫长途 Fragment番外篇——TabLayout+ViewPager+Fragment
Android项目实战:ViewPager切换动画(3.0版本以上有效果)
ViewPager 和 FragmentPagerAdapter 中 Fragment 的 Android 生命周期管理
Android实战简易教程-第二十六枪(基于ViewPager实现微信页面切换效果)