【问题标题】:Stop Android TabLayout loading next page automatically停止 Android TabLayout 自动加载下一页
【发布时间】:2016-04-01 10:08:46
【问题描述】:

我已经意识到,在 Android 中使用选项卡布局时,它总是会加载与其接触的选项卡,即之前的选项卡和之后的选项卡,因此在您分页时会加载它。

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

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

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

【问题讨论】:

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


    【解决方案1】:

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

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

    只有当该特定选项卡对用户可见时才会调用,所以只有这样你才能调用所有加载函数。希望对您有所帮助。

    【讨论】:

    • 谢谢,但有时 setUserVisibleHint 调用太快,做事要先做
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-09-28
    • 1970-01-01
    相关资源
    最近更新 更多