2012-04-06 4 views
1

Ich benutze ksoap2-Android zum Erstellen und Parsen meiner Anfragen. Wie auch immer, wenn ich es benutzen möchte, muss ich es asynchron machen. Also wähle ich einen neuen Thread dafür.Erstellen von Web-Service-Anfragen in neuen Threads

Es sieht in etwa so aus, ich poste nicht alle meine Logik Anfrage und Parsing, denn in diesem Fall ist es nicht wichtig.

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

       String answer = WebServiceRequests.About(); 

        try{ 

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

So bekomme ich Anfrage in Antwort string, aber jetzt, wie meine GUI zu aktualisieren? Wenn ich versuche, bekomme ich eine Ausnahme, die ich in diesem Thread nicht aktualisieren kann.

Bitte posten Sie Ihre Lösungen dazu. Wenn Sie Handler oder AsyncTask verwendet haben oder sogar mit meinem Beispiel arbeiten.

Danke.

Antwort

0

AsnycTask ist immer die erste recommandation, Wenn Sie diese vorher nicht getan haben, lesen Sie diesen official dev guide, Beispielcode:

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); 
} 

}

Ihre AsyncTask zu starten:

new MyAsyncTask().execute(); 

auf Die PostExecute - Methode wird garantiert zu einem späteren Zeitpunkt im UI - Thread aufgerufen, sobald der Hintergrund - Thread (AKA. doInBackground) ist fertig. Der zugrundeliegende Rahmen übernimmt alle schmutzigen Arbeiten für uns.

Hoffe, das hilft.

0

Für asynchrone Aufgaben verfügt Android über eine Klasse AsyncTask.

In dieser Klasse können Sie zwei Methoden überschreiben. Die erste Methode ist für Code, der im Hintergrund sein sollte (anderer Thread). Die zweite Methode wird auf dem UI-Thread aufgerufen, nachdem die erste Methode beendet wurde.

Einzelheiten siehe android.os.AsyncTask

Verwandte Themen