Android实战开发篇 ViewPager+Fragment 取消预加载

Posted 彭老希

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Android实战开发篇 ViewPager+Fragment 取消预加载相关的知识,希望对你有一定的参考价值。

一、Fragment的两个方法

  1. void setUserVisibleHint(boolean isVisibleToUser)
  2. 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实现微信页面切换效果)

Android开发实战(二十一):浅谈android:clipChildren属性

新建项目&使用viewPager实现一个Android电子书阅读APP