预加载+懒加载,ViewPager+Fragment

预期效果:用户不可见界面只初始化UI,UI可见时开始获取数据并更新UI。

预加载

        ViewPager默认会缓存当前页相邻的界面,比如当滑动到第2页时,会初始化第1页和第3页的界面(即Fragment对象,且生命周期函数运行到onResume()),可以通过setOffscreenPageLimit(count)设置离线缓存的界面个数。

懒加载

        ViewPager+Fragment中,滑动到新的Fragment,先显示”正在加载”,过会才会正常显示界面

为什么懒加载:用户没进入的界面需要有一系列的网络、数据库等耗资源、耗时的操作,预先做这些数据加载是不必要的。

屏蔽未显示UI初始化数据:

UI可见时请求数据


import android.os.Bundle;

import android.support.v4.app.Fragment;

import android.view.LayoutInflater;

import android.view.View;

import android.view.ViewGroup;


public class Fra_1extends Fragment {

private ViewmRootView;

private boolean mIsInited;

private boolean mIsPrepared;


@Override

public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {

mRootView = inflater.inflate(R.layout.activity_main, container,false);

mIsPrepared =true;

lazyLoad();

return mRootView;}


public void lazyLoad() {

if (getUserVisibleHint() &&mIsPrepared && !mIsInited) {

//异步初始化,在初始化后显示正常UI

            loadData();}}


private void loadData() {

    new Thread() {

        public void run() {

        //1. 加载数据

        //2. 更新UI

        //3. mIsInited = true

            }

}.start();}


@Override

public void setUserVisibleHint(boolean isVisibleToUser) {

super.setUserVisibleHint(isVisibleToUser);

if (isVisibleToUser) {

lazyLoad();}}


public static Fra_1 newInstance() {

return new Fra_1();}}


Tips:为避免不必要的重新数据加载(重复调用onCreateView()),设置Viewpager默认缓存半径为Fragment数-1;既4个Fragment设置setOffscreenPageLimit(3);


转至:https://mp.weixin.qq.com/s/dUuGSVhWinAnN9uMiBaXgw

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 176,355评论 25 709
  • 二组-龚琴 20171028 心得打卡(补) — 今日学习内容 —叶武滨说时间管理100讲中的第41-50讲。 —...
    Sundaisy阅读 2,087评论 0 0
  • 自从上一次事件后,九重天上传的沸沸扬扬。凤九也乖乖的窝在洗梧宫,时不时呆愣走神。白浅自然也知道自家侄女在想什么,她...
    曼珠妙语阅读 10,832评论 10 70
  • 万里长城自辽宁告别鸭绿江之后,翻千山越万岭在偏关终于和滔滔南流的黄河第一次见面了。长城、黄河可谓中华大地上的两大奇...
    幸福使者365阅读 6,335评论 1 2
  • 想到我们两兄妹,我忍不住眼泪掉下来了,为什么老天爷要这么对我们,我自认是个好人,一个不错的好人。 我安慰自己这是对...
    人生漫步阅读 9,595评论 0 0

友情链接更多精彩内容