没错预加载就是这么简单
之前项目中遇到图片加载问题,首先想到异步加载 ,接着想用什么框架,框架很多,我用的是volley,感觉挺方便的,废话不多说,记录一下自己的错误然后接着前行,用volley的时候虽然出现了效果,但是在出现默认图片之前还是出现几秒让人难以忍受的空白,不得不靠。
上代码:
/**
在刷屏页 创建任务:
private void getData(){
ReadImgTask task = new ReadImgTask();
task.execute();
}
接着:
/**
* 预加载跑马灯图片
* @author kcw001
*/
class ReadImgTask extends PreReadTask<String, Void, Void> {
@Override
protected Void doInBackground(String... arg0) {
List list = new ArrayList<String>();
try {
JSONObject obj = new JSONObject();
obj.put("{}", null);//请求格式 {} 返回结果集
String jsonString = PostCLientUtils.doHttpsPost(
Information.Url,
JsonStrUtils.JsonStr(obj));
JSONObject demoJson;
demoJson = new JSONObject(jsonString);
JSONArray numberList = demoJson.getJSONArray("result");
for (int i = 0; i < numberList.length(); i++) {
String picture_url = numberList.getJSONObject(i)
.getString("picture_url");
JSONObject object = numberList.getJSONObject(i)
.getJSONObject("picture");
String __type = object.getString("__type");
String id = object.getString("id");
String name = object.getString("name");
String url = object.getString("url");
String objectId = numberList.getJSONObject(i)
.getString("objectId");
String createdAt = numberList.getJSONObject(i)
.getString("createdAt");
String updatedAt = numberList.getJSONObject(i)
.getString("updatedAt");
list.add(url);
}
Thread.sleep(200);//模拟网络延时
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
Data.putData("url", list); //放数据
return null;
}
===============
另外 Data 类 和ACache工具类一样好用:
/**
* 存取数据
* @author kcw001
*/
public class Data {
private static AbstractMap<String, Object> mData = new ConcurrentHashMap<String, Object>();
private Data() {
}
public static void putData(String key,Object obj) {
mData.put(key, obj);
}
public static Object getData(String key) {
return mData.get(key);
}
}
===============
在你的 闪屏页面之后取数据
Data.get("");读取操作,ok 走下一段路!