停止Android TabLayout自动加载下一页

时间:2016-04-01 10:08:46

标签: android view tabs android-viewpager android-tablayout

我已经意识到在Android中使用标签布局时,它总是加载触摸它的标签,即之前的标签和标签,因此当您翻页时它会被加载。

但是,我从服务器加载大量内容和图像,这会导致大量数据和内存使用,我经常得到OOM errors,我使用Glide有效地显示图像。

基本上我需要知道3件事:

  1. 如何停止加载除当前页面以外的任何页面的标签布局
  2. 如何在到达新页面以清除内存后clear/recycle/delete旧选项卡
  3. 如何在返回标签时始终刷新标签

1 个答案:

答案 0 :(得分:9)

默认情况下,它是viewpager.setOffscreenPageLimit(1),这意味着默认情况下,View pager将在当前选项卡的右侧和右侧选项卡上加载至少1个。它是这样做的,主要是因为当两个标签的某些区域可见时,你可以滑动viewpager。对于那些平滑过渡,需要预加载。您无法将其设置为viewpager.setOffscreenPageLimit(0)。 唯一的出路是使用此方法setUserVisibleHint 将此添加到您的片段

@Override
public void setUserVisibleHint(boolean isVisibleToUser) {
    super.setUserVisibleHint(isVisibleToUser);
    if (isVisibleToUser) {
        // load data here
    }else{
       // fragment is no longer visible
    }
}

仅当用户可以看到该特定选项卡时才会调用此方法,因此只有这样您才能调用所有的loadfing函数。希望它有所帮助。