Android之取消ViewPage+Fragment的预加载
用过ViewPage+Fragment组合的童鞋自然知道这个问题,没有遇到的同学祝愿你们永远不会遇到,呵呵。直接上关键代码
注释:setUserVisibleHint每次fragment显示与隐藏都会调用,他的调用顺序由于onCreate,所以需要一些常量进行判断
|
1
2
3
4
5
6
7
8
9
10
11
12
13
|
private
boolean
mHasLoadedOnce =
false
;
@Override
public
void
setUserVisibleHint(
boolean
isVisibleToUser) {
if
(
this
.isVisible()) {
// we check that the fragment is becoming visible
if
(isVisibleToUser && !mHasLoadedOnce && mArrayList==
null
) {
// async http request here
mHasLoadedOnce =
true
;
}
}
super
.setUserVisibleHint(isVisibleToUser);
}
|
由于setUserVisibleHint优于onCreate调用,所以当onCreate调用完毕setUserVisibleHint就不会触发,这时需要在首个显示的fragment调用setUserVisibleHint方法
|
1
2
3
4
5
6
|
@Override
public
void
onActivityCreated(Bundle savedInstanceState) {
// TODO Auto-generated method stub
setUserVisibleHint(
true
);
super
.onActivityCreated(savedInstanceState);
}
|
这个是设置viewpager保留多少个显示界面
|
1
|
pager.setOffscreenPageLimit(
3
);
|
本文介绍如何通过修改`setUserVisibleHint`方法避免ViewPager+Fragment组合中不必要的数据预加载,减少内存消耗并提高应用性能。
505

被折叠的 条评论
为什么被折叠?



