android - 停止 Android TabLayout 自动加载下一页

标签 android view tabs android-viewpager android-tablayout

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

但是,我从服务器加载了大量内容和图像,这会导致大量数据和内存使用,而且我经常遇到 OOM 错误,我正在使用 Glide 高效地显示图像。

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

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

最佳答案

默认情况下它是 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/

相关文章:

view - 如何从静态javascript获取ember/emberjs中的 View 实例的引用?

android - 如何在单击按钮时刷新 fragment 选项卡内容

用于检测页面何时加载到 Firefox 的另一个窗口中的 Javascript

java - Android 4+ 操作栏选项卡在首次启动时显示为下拉列表 - 为了防止?

java - Android获取ArrayList中的所有联系人电话号码

android - 如何下载 Facebook 个人资料图片

android - 如何在android中倾斜布局?

javascript - 模型属性未统一命名的 Backbone 集合和模板

sql - 将主键添加到 sql View

android - 首先调用哪个 Activity 方法?