Я использую асинхронный код для извлечения изображений из сети внутри цикла for. Pls предлагает, что я могу сделать, чтобы быстро создать этот список. Я передаю эти данные в listview.Async Задача работает очень медленно
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();
}
}
Спасибо за ваш ответ. Но это все еще не сработало. Конечным решением, которое работало, было создание новой Thread вместо async-задачи и немедленное начало ее использования с использованием одновременного обратного отсчета. Я думаю, что моя предыдущая задача async не смогла начать сразу после вызова или была бы заблокирована чем-то другим. Для получения изображений через Интернет я использовал AsyncHttpClient. – funambulist