0
我正在使用异步代码从for循环中的Web获取图像。请建议我能做些什么来快速生成此列表。我将这些数据传递给listview。异步任务运行速度非常慢
private class CreateItems extends AsyncTask<Void, Void, Void>{
protected Void doInBackground(Void... params) {
android.os.Debug.waitForDebugger();
SharedPreferences sp = getSharedPreferences(UserDataManagement.CATALOG, 0);
String items = sp.getString("items", "");
try {
JSONArray array = new JSONArray(items);
for(int i=0;i<array.length();i++){
JSONObject item = array.getJSONObject(i);
String id = item.getString("id");
String firstName = item.getString("first_name");
String lastName = item.getString("last_name");
String imageUrl = item.getString("image");
InputStream in = new java.net.URL(imageUrl).openStream();
Bitmap imageBitmap = BitmapFactory.decodeStream(in);
in.close();
Item item = new Item(id, firstName, lastName, imageUrl, imageBitmap);
itemList.add(item);
/* if(i!=0 && i%10==0){
runOnUiThread(new Runnable() {
public void run() {
adapter.notifyDataSetChanged();
}
});
}*/
}
}
catch(Exception ex){
ex.printStackTrace();
}
return null;
}
protected void onPostExecute(Void result) {
adapter.notifyDataSetChanged();
}
}
感谢您的回复。但是,这仍然没有奏效。最终的解决方案是创建一个新的线程而不是异步任务,并使用并发锁定倒计时立即开始。我认为我之前的异步任务无法在通话结束后马上启动,或者被别的东西挡住了。为了通过网络获取图像,我使用了AsyncHttpClient。 – funambulist