Android Fragment实现懒加载

493 阅读1分钟

在最近的项目中一个界面中有四个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)