停止 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 未显示在底部
Android 嵌套滚动NestedScrollView+TabLayout+ViewPager+Fragment+RecyclerView 实现京东美团首页效果Tab页滚动到顶部时自动吸附
Android 嵌套滚动NestedScrollView+TabLayout+ViewPager+Fragment+RecyclerView 实现京东美团首页效果Tab页滚动到顶部时自动吸附
Android 嵌套滚动NestedScrollView+TabLayout+ViewPager+Fragment+RecyclerView 实现京东美团首页效果Tab页滚动到顶部时自动吸附