停止Android TabLayout自动加载下一页
我已经意识到,在Android中使用标签布局时,它总是加载与之接触的标签,即之前的标签和之后的标签,因此当你翻页到它时,它会被加载 但是,我从服务器加载了大量的内容和图像,这会导致大量的数据和内存使用,而且我经常会出现停止Android TabLayout自动加载下一页,android,view,tabs,android-viewpager,android-tablayout,Android,View,Tabs,Android Viewpager,Android Tablayout,我已经意识到,在Android中使用标签布局时,它总是加载与之接触的标签,即之前的标签和之后的标签,因此当你翻页到它时,它会被加载 但是,我从服务器加载了大量的内容和图像,这会导致大量的数据和内存使用,而且我经常会出现OOM错误,我使用Glide高效地显示图像 基本上我需要知道三件事: 如何停止选项卡布局加载当前页面以外的任何页面 如何在进入新页面后清除/回收/删除旧选项卡以清除内存 如何在返回时始终刷新选项卡 默认情况下,它是viewpager.setOffscreenPageLimit(1)
OOM错误
,我使用Glide高效地显示图像
基本上我需要知道三件事:
默认情况下,它是viewpager.setOffscreenPageLimit(1),这意味着viewpager在默认情况下将至少在当前选项卡的右侧和左侧选项卡上加载1个。之所以这样做,主要是因为在滑动viewpager时,两个选项卡的某个区域都可见。对于这些平稳过渡,需要预加载。无法将其设置为viewpager.setOffscreenPageLimit(0)。 唯一的解决方法是使用此方法setUserVisibleHint 将此添加到您的片段中
@Override
public void setUserVisibleHint(boolean isVisibleToUser) {
super.setUserVisibleHint(isVisibleToUser);
if (isVisibleToUser) {
// load data here
}else{
// fragment is no longer visible
}
}
只有当特定选项卡对用户可见时,才会调用此函数,因此只有这样,您才能调用所有loadfing函数。希望有帮助。默认情况下它是viewpager.setOffscreenPageLimit(1),这意味着viewpager在默认情况下将在当前选项卡的右侧和左侧分别加载至少1个选项卡。之所以这样做,主要是因为在滑动viewpager时,两个选项卡的某个区域都可见。对于这些平稳过渡,需要预加载。无法将其设置为viewpager.setOffscreenPageLimit(0)。 唯一的解决方法是使用此方法setUserVisibleHint 将此添加到您的片段中
@Override
public void setUserVisibleHint(boolean isVisibleToUser) {
super.setUserVisibleHint(isVisibleToUser);
if (isVisibleToUser) {
// load data here
}else{
// fragment is no longer visible
}
}
只有当特定选项卡对用户可见时,才会调用此函数,因此只有这样,您才能调用所有loadfing函数。希望能有所帮助。谢谢,但有时调用setUserVisibleHint太快,而且在所有操作之前先执行操作。谢谢,但有时调用setUserVisibleHint太快,并且在所有操作之前先执行操作