2013-06-05 87 views
0
public void btnWeb_Click(View view){ 
    String url="http://localhost/test/index.php"; 

    List<NameValuePair> dict = new ArrayList<NameValuePair>(); 
    dict.add(new BasicNameValuePair("url",url)); 
    dict.add(new BasicNameValuePair("id", "3")); 

    PostReq postreq= new PostReq(); 
    postreq.execute(dict); 

    String result=""; 
    while(result==""){ result= postreq.content;} 
    System.out.println(result); } 

PostReq是異步執行Post請求到服務器的類。適用於Android的Java異步POST請求

問題是,如果我不把while,打印功能打印變量RESULT爲空,因爲它沒有等待線程postreq.execute(dict)完成操作。

我強迫等待WHILE,但WHILE阻止主線程。

如何等待直到執行該方法,然後將該值異步分配給變量RESULT

例如,在C#中的Windows Phone,我就是這麼做的:

async void button_click() { 
    Dictionary<string, string> dict = new Dictionary<string, string>(); 
    dict.Add("id", "3"); 
string url="http://localhost/test/index.php"; 
    PostReq pr= new PostReq(url,dict); 
    String risposta = await pr.getRisposta(); } 

使用Java的Android,而不是我該怎麼辦?

回答

0

看看AsyncTask。在另一個線程的結果循環中重複檢查結果並不是一個好主意。

http://developer.android.com/reference/android/os/AsyncTask.html

+0

mmh ..在我的情況下如何使用AsyncTask的實際示例? – jjx

+0

在我提供的鏈接中的例子應該給你一個關於如何在doInBackground()中實現的想法,你會做POST和在onPostExecute()中檢查你的結果。如果它對你有幫助,請接受答案。 – Ramp