停止 Android TabLayout 自动加载下一页

Posted

技术标签:

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

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

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

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

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

【问题讨论】:

【参考方案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 调用太快,做事要先做

以上是关于停止 Android TabLayout 自动加载下一页的主要内容,如果未能解决你的问题,请参考以下文章

TabLayout 加载 Fragments 但其 BottomNavigationView 未显示在底部

安卓tablayout控件的使用

Android 嵌套滚动NestedScrollView+TabLayout+ViewPager+Fragment+RecyclerView 实现京东美团首页效果Tab页滚动到顶部时自动吸附

Android 嵌套滚动NestedScrollView+TabLayout+ViewPager+Fragment+RecyclerView 实现京东美团首页效果Tab页滚动到顶部时自动吸附

Android 嵌套滚动NestedScrollView+TabLayout+ViewPager+Fragment+RecyclerView 实现京东美团首页效果Tab页滚动到顶部时自动吸附

Android TabLayout 的默认高度是多少