我意识到在 Android 中使用选项卡布局时,它总是加载触摸它的选项卡,即之前的选项卡和之后的选项卡,因此当您翻页时它会被加载。
但是,我从服务器加载了大量内容和图像,这会导致大量数据和内存使用,而且我经常遇到 OOM 错误
,我正在使用 Glide 高效地显示图像。
基本上我需要知道三件事:
- 如何停止选项卡布局加载当前页面以外的任何页面
- 如何在到达新页面后
清除/回收/删除
旧标签以清理内存 - 返回标签页时如何始终刷新标签页
最佳答案
默认情况下它是 viewpager.setOffscreenPageLimit(1) ,这意味着 View pager 默认情况下将在当前选项卡的右侧和左侧至少加载 1 个选项卡。这样做,主要是因为当你滑动 viewpager 时,两个选项卡的某些区域都可见。对于那些平滑的过渡,预加载是必需的。您不能设置它 viewpager.setOffscreenPageLimit(0)。 唯一的出路是使用这个方法 setUserVisibleHint 将此添加到您的 fragment
@Override
public void setUserVisibleHint(boolean isVisibleToUser) {
super.setUserVisibleHint(isVisibleToUser);
if (isVisibleToUser) {
// load data here
}else{
// fragment is no longer visible
}
}
仅当特定选项卡对用户可见时才会调用此方法,因此只有到那时您才能调用所有 loadfing 函数。希望对您有所帮助。
关于android - 停止 Android TabLayout 自动加载下一页,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36353560/