停止Android TabLayout自动加载下一页

Sup*_*ale 1 tabs android view android-viewpager android-tablayout

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

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

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

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

D A*_*wal 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
    }
}
Run Code Online (Sandbox Code Playgroud)

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