我在android中有一個應用程序,我試圖從網上檢索一些使用AsyncTask
線程的圖片。 事情是,我檢索loop
這樣的圖片,所以我爲每個索引啓動一個新的AsyncTask
線程。每個線程都會返回一張圖片(imageView)。幫助管理AsynTask線程
這裏是我的問題:
發起的線程返回圖片asynchorounsly所以當我試圖存取權限存儲這些圖片,我得到ArrayIndexOutofBounds
名單。
這是我的代碼:
for(int i=0;i<friends.size();i++)
{
getUserPic(friends.get(i).getId());
}
這是getUserPic
方法:
public void getUserPic(String userID){
imageURL = "http://graph.facebook.com/"+userID+"/picture?type=small";
new Task().execute(new String[] {imageURL});
}
,這裏是螺紋:
private class Task extends AsyncTask<String, Void, Bitmap>{
@Override
public Bitmap doInBackground(String...arg0){
DefaultHttpClient client = new DefaultHttpClient();
HttpGet httpGet = new HttpGet(arg0[0]);
try{
HttpResponse execute = client.execute(httpGet);
InputStream content = execute.getEntity().getContent();
profilePicBitmap=BitmapFactory.decodeStream(content);
}
catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return profilePicBitmap;
}
@Override
public void onPostExecute(Bitmap result) {
imageView.setImageBitmap(result);
arrayImageView.add(imageView);
}
}
所以我想做的事是一樣的東西:
List<ImageView> arrayImageView=new ArrayList<ImageView>();
for(i....)
{
arrayImageView[i]=getUserPic(...);
}
public ImageView getUserPic(String userID){
imageURL = "http://graph.facebook.com/"+userID+"/picture?type=small";
new Task().execute(new String[] {imageURL});
return ImageView;
}
我的意思是每個ImageView
由AsyncTask線程返回,也將由getUserPic
方法返回。因此,我會更容易跟蹤它們。
問題:我該如何繼續處理,以便AsynTask
返回的圖片也是getUserPic()
返回的變量。
我希望你明白我的mean.Thx
'onPostExecute'方法在主(UI)線。你可能必須自己同步它。 – Mannaz
我敢肯定,我必須這樣做,但我真的不知道如何:P – adrian
我會用'@Override public void onPostExecute(Bitmap result){ imageView.setImageBitmap(result); synchronized(arrayImageView){ arrayImageView.add(imageView);} }' – Mannaz