2014-01-25 3 views
1

Класс AsyncTask не работает внутри цикла. Ниже мой код, пожалуйста, просмотрите его.AsyncTask не работает в цикле

for (int i = 0; i < size; i++) { 
    String id = careplan_disease_Parser.DiseaseID.get(i); 
    String method = "GetCarePlan_Comment?CurrentValue=0&OptionId=" + id + "&DiseaseID=" + id + "&OrgId=" + orgId + ""; 
    String link = "GetCarePlan_Comment_dislink"; 

    task = new AsyncTask123(); 
    task.execute(link, method); 
    method=null; 
    link=null; 
    task=null; 
} 

Задача выполняется только один раз. поэтому я не могу получить значение из веб-службы во второй раз в цикле. Пожалуйста, помогите мне, как заставить его работать.

Благодаря

+0

попробовать с движущимися 'для loop' внутри' doInBackround() 'в' AsyncTask123() ' –

+0

Когда я поставил цикл в Do в фоновом режиме. он дает мне ошибку java.lang.RuntimeException: не удается создать обработчик внутри потока, который не вызвал Looper.prepare() – user3173387

+0

И убедитесь, что вы не вызываете 'AsyncTask123()' inside 'doInBackround()' только вызывать запрос Http отсюда –

ответ

0

Вы можете написать старт-метод, который вызывается в onPostExecute-части вас AsyncTask. Это должно выглядеть так:

private void start(int number) 
{ 
    if(number == size) 
    { 
     //exit 
    } 
    else 
    { 
     new AsyncTask123().execute(link, method); 
    } 
} 


private class AsyncTask123 extends AsyncTask<> { 
    protected void onPostExecute() { 
     start(i++); 
    } 
} 

Это должно сработать, вам просто нужно подогнать его под ваши нужды.

0

если вы хотите AsyncTask в течение цикла, то следует вызвать класс, как:

new AsyncTask123().execute(link, method); 

Не нравится:

  task = new AsyncTask123(); 
     task.execute(link, method); 
Смежные вопросы