2014-01-25 39 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; 
} 

任務只執行一次。所以我無法從循環中第二次獲得Web服務的價值。 請幫助我如何使其工作。

感謝

+0

與移動'爲loop'內'doInBackround()''中的嘗試AsyncTask123()' –

+0

當我把循環放在後臺做。它給了我錯誤java.lang.RuntimeException:不能在線程內創建沒有調用Looper.prepare() – user3173387

+0

的處理程序並確保請勿在'doInBackround()'內調用'AsyncTask123()'只從該處調用Http請求 –

回答

0

您可以編寫一個啓動方法,被調用你的AsyncTask的onPostExecute部分。它應該是這樣的:

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 for循環,那麼你應該打電話給你的類,如:

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

不喜歡:

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