Вы используете один и тот же объект task
для каждой итерации цикла (именно поэтому ошибка говорит: «задача уже выполняется»).Вы можете исправить это, создав новый объект задачи для каждой итерации, например,
MyTask task = new MyTask();
task.execute(new String[] {imageURL});
Однако это может быть довольно бесполезным, если вы в конечном итоге запустите много задач.Поэтому вам может быть лучше иметь одно задание и дать ему список изображений для загрузки.Например,
ids = new ArrayList<String>();
for(int i=0;i<friends.size();i++)
{
ids.add(friends.get(i).getId());
}
getUserPics(ids);
Тогда ваш метод getUserPic
передаст все идентификаторы одному экземпляру задачи.
public void getUserPics(List<String> userIDs){
final String imageURL;
Bitmap bitmap=null;
String[] imageURLs = new String[userIDs.legnth()];
for(int i = 0; i < userIDs.length(); i++) {
imageURLs[i] ="http://graph.facebook.com/"+userIDs[i]+"/picture?type=small";
}
task.execute(imageURLs);
}
Делая это таким образом, вы, вероятно, захотите использовать publishProgress
на AsyncTask
для обновления вашего пользовательского интерфейса изображениями, которые вы уже загрузили, вместо того, чтобы ждать до конца, когда они у вас есть.