2012-04-06 64 views
1

我正在使用kso​​ap2-Android來製作和解析我的請求。如果我想要使用它,我必須做到異步。所以我選擇爲此創建一個新的線程。在新線程中創建Web服務請求

它看起來像這樣,我不張貼所有我的邏輯請求和解析,因爲在這種情況下它並不重要。

new Thread(new Runnable() { 
      public void run() { 

       String answer = WebServiceRequests.About(); 

        try{ 

        }catch (Exception e) { 
         // TODO: handle exception 
         e.printStackTrace(); 
        } 
      } 
      }).start(); 

,所以我得到的答案要求,但現在如何更新我的GUI?當我嘗試我得到異常,我不能在該線程中更新。

請張貼您的解決方案。如果您使用Handler或AsyncTask,甚至可以使用我的示例。

謝謝。

回答

0

AsnycTask永遠是第一位recommandation,如果你還沒有這樣做之前,請閱讀本official dev guide,示例代碼:

private class MyAsyncTask extends AsyncTask<Void, Void, String> { 
protected String doInBackground(Void... params) { 
    String answer = WebServiceRequests.About(); 
    return answer; 
} 

protected void onPostExecute(String answer) { 
    // Update UI. 
    showDialog("Answer " + answer); 
} 

}

要啓動的AsyncTask:

new MyAsyncTask().execute(); 

上PostExecute方法保證在將來的某個時刻在UI線程上調用,只要後臺線程(AKA。 doInBackground)完成。底層框架爲我們處理所有骯髒的工作。

希望這會有所幫助。

0

對於異步任務,Android具有一個類AsyncTask。

在這個類中,您可以重寫兩個方法。第一種方法是應該在後臺(不同線程)的代碼。第一種方法完成後,第二種方法在UI線程上調用。

有關詳細信息,請參閱android.os.AsyncTask