--------前言------> 当我们使用ViewPager+Fragment的时候肯定知道Fragment会预先加载,如果有大量数据的话,会造成Fragment卡顿现象,所以这里说明一种Fragment缓加载的方式,相当简单,只要继承以下父类Fragment,再在对应方法中加载数据即可实现Fragment缓加载了。
父类代码: import android.support.v4.app.Fragment; /** * @Description:[功能描述] * @Author:kenneth */ public abstract class ShouYeBase extends 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 ZuiXinFragment extends ShouYeBase { private boolean isPrepared = false; @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View view = inflater.inflate(R.layout.zuixin_view, null, false); isPrepared = true; return view; } @Override protected void lazyLoad() { if (!isPrepared || !isVisible) { return; } } }