在最近的项目中一个界面中有四个Fragment。每个碎片中都要进行网络请求。
周期也开始并进行了加载。后来在网上进行了搜索找到了一个非常简单的官方自带的方法setUserVisibleHint(boolean isVisibleToUser)。我们可以通过这个方法来判断哪个碎片现在正在显示,当该碎片正在显示在我们眼前时为true。这样我们就可以一句该方法来进行网络请求了。下边废话不多说直接上代码:
private long refreshTime = 0; //请求时间
public void setUserVisibleHint(boolean isVisibleToUser) {
if (isVisibleToUser && isVisible()) {
if (refreshTime == 0
|| (refreshTime != 0 && (System.currentTimeMillis() - refreshTime) > 30 * 60 * 1000)) {
if (isConnected) {
initData();// 从后台获取数据
}
}
}
super.setUserVisibleHint(isVisibleToUser);
};
...
...
// 网络请求方法
private void initData() {
myProgressDialog.show();
RequestParams params = new RequestParams();
params.addBodyParameter("sessionId", sessionId);
params.addBodyParameter("pageNo", "1");
params.addBodyParameter("pageSize", "12");
netUtil.getNetGetRequest(findHotUrl, params);
// 在这里我们将请求时间赋值 可以达到三十分钟后再请求的效果(虽然有时候 屏幕黑一段时间 再次唤醒的时候也会加载进行网络请求这个就暂时没有明白)
refreshTime = System.currentTimeMillis();
}
...
...
..
if (getUserVisibleHint()) {
initData(); // 请求的时候一个判断
}
很简单的一个方法就解决了懒加载的问题。希望对大家有帮助!(菜鸡成长史ing)