没错预加载就是这么简单

之前项目中遇到图片加载问题,首先想到异步加载 ,接着想用什么框架,框架很多,我用的是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 走下一段路!

 

posted @ 2015-11-26 22:32  一座城池2012  阅读(176)  评论(0编辑  收藏  举报