2012-11-26 9 views
5

Ich habe diese AsyncTask für einige Projekte verwendet, aber immer noch nicht ganz bekommen, was <String, Void, String> bedeutet. Bedeutet das die Parametertypen der nicht implementierten Methoden? Gibt es irgendwelche Befehle (was entspricht die Methode String, Void, String)?AsyncTask <String, Void, String> generischer Typ. Android

+0

http://stackoverflow.com/questions/13238150/java-generics-what-is-this-syntax-for –

Antwort

6

Es in docs beschrieben:

android.os.AsyncTask<Params, Progress, Result> 

Die drei Typen durch eine asynchrone Aufgabe verwendet werden, die folgenden:

Params, the type of the parameters sent to the task upon execution. 
Progress, the type of the progress units published during the background computation. 
Result, the type of the result of the background computation. 

Wenn Sie nicht einer von ihnen brauchen, passieren Void (aber es müssen immer 3 Typen sein)

7

Von Android Docs AsyncTask Seite:

android.os.AsyncTask<Params, Progress, Result> 

Die drei durch eine asynchrone Aufgabe verwendeten Typen sind die folgenden:

Params, die Art der an die Aufgabe gesendet Parameter bei der Ausführung.

Fortschritt, der Typ der Fortschritts-Einheiten, die während der Hintergrundberechnung veröffentlicht wurden.

Ergebnis, die Art des Ergebnisses der Hintergrundberechnung.

Jetzt ist mein Verständnis in einfachen Worten:

Params: (in Ihrem Fall String) ist der Parameter, die AsyncTask nimmt. Sie müssen dies weitergeben, wenn Sie execute Methode aufrufen

Progress: (in Ihrem Fall Void) ist die Art des Fortschritts. Leere bedeutet, dass Sie es nicht verwenden. Wenn Sie sagen, Integer, könnten Sie Werte wie 10, 20, 30 ... verwendet haben und diese verwenden, um einen Fortschrittsbalken auf dem Bildschirm anzuzeigen.

Ergebnis: (in Ihrem Fall String) ist, was die AsyncTask als Ergebnis zurückgibt. Sie geben eine Zeichenfolge zurück. Sie können jedes beliebige Objekt zurückgeben.

Also einfach gesagt, es ist etwas wie eine Methode, wo Params Parameter sind, Ergebnis ist Rückgabetyp und Fortschritt zeigt Ihnen den Status des Verarbeitungsfortschritts.

Zum weiteren Verständnis siehe this tutorial, zitiert auch aus der gleichen Seite kann hilfreich sein:

AsyncTask<TypeOfVarArgParams, ProgressValue, ResultValue>

TypeOfVarArgParams in die doInBackground() übergibt Methode als Eingang wird ProgressValue für Fortschrittsinformationen verwendet und ResultValue muss von der doInBackground() - Methode zurückgegeben werden und wird an onPostExecute() als Parameter übergeben.

1

Ist Parameter in AsyncTask auf den Parameter bezieht sich in doInBackground, 2. Parameter übergeben werden soll in onProgressUpdate und dritten Parameter übergeben werden soll, in OnPostExecute weitergegeben werden. Wir können jeden Datentyp verwenden, der für die jeweilige Funktionalität geeignet ist. Ein Beispiel für einen Aufruf mit dem Parameter type (String, Integer, String) finden Sie weiter unten.

private class MyTask extends AsyncTask<String, Integer, String> 
     { 
      protected String doInBackground(String... u) 
      { 
       // do something in background 
       return null;  
      } 
      protected void onPreExecute() 
      {    
       // do something before start 
        } 
      public void onProgressUpdate(Integer... args) 
      {  

      }      
      protected void onPostExecute(String result) 
      {         
           // do something after execution 

      } 
     }