Übergeben Sie weitere Werte in doInBackground AsyncTask Android

9

Wie man mehr Werte in doInBackground

übergibt

Mein AsyncTask sieht so aus.

%Vor%

Ist es irgendwie möglich, mehr Werte auf meinem protected String DoInBackground

zu übergeben?

zum Beispiel: protected String doInBackground(String... sUrl, String... otherUrl, Context context)

Und wie geht es execute die AsyncTask nach? new DownloadFile.execute("","",this) oder etwas?

    
Naskov 28.05.2013, 09:11
quelle

9 Antworten

7
%Vor%

Die drei aufeinanderfolgenden Punkte bedeuten mehr als eine Zeichenfolge. Die Punkte sind varargs

  

Und wie kann man den Kontext weitergeben?

Sie können das Hinzufügen eines Konstruktors erzwingen, der den Kontext als Parameter verwendet:

%Vor%     
Blackbelt 28.05.2013, 09:14
quelle
11

Sie können mehrere Parameter senden, da Sie sie als varargs senden können. Aber Sie müssen denselben Parametertyp verwenden. Also, um zu tun, was Sie versuchen, können Sie folgen eines der folgenden

Option 1

Sie können eine Setter-Methode verwenden, um einen Wert des Klassenmembers festzulegen und dann die in doInBackGround zu verwenden. Zum Beispiel

%Vor%

Option 2

Oder Sie können Konstruktor verwenden, um die Werte wie

zu übergeben %Vor%     
stinepike 28.05.2013 09:14
quelle
4

Sie können so etwas in Ihrer doInBackground-Methode tun:

%Vor%

Führen Sie AsyncTask auf diese Weise aus:

%Vor%

der erste Wert: sUrl [0] ist derjenige, der aus string1 und
übergeben wurde surl [1] ist der zweite übergebene Wert, d. h. string2!

    
Niraj Adhikari 28.05.2013 09:41
quelle
3

Ja, Sie können mehr Werte in constructor übergeben, aber nicht in doInBackground

Versuchen Sie es auf diese Weise

%Vor%

Async-Aufgabe

%Vor%

}

    
moDev 28.05.2013 09:15
quelle
3

Sie können dies aus folgenden Gründen nicht tun:

%Vor%

ist keine gültige Methodensignatur. Die Punktnotationen (Varargs) können nur als letzter Parameter der Methode verwendet werden. Diese Einschränkung ist, weil sie sonst den Polymorphismus viel komplexer machen würde. In der Tat, wie würde Java wissen, welche Ihrer Strings zu sUrl und welche zu otherUrl gehen?

Außerdem überschreibt doInBackground eine Methode von AsyncTask . Daher können Sie die Methodensignatur nicht ändern.

Sie können diese Werte jedoch zu Mitgliedern Ihrer Klasse machen und den Konstruktor Ihrer DownloadFile -Klasse übergeben oder Setter hinzufügen, um sie vor dem Aufruf von execute zu setzen.

    
njzk2 28.05.2013 09:17
quelle
1

Sie können den Konstruktor

verwenden %Vor%     
NaserShaikh 28.05.2013 09:15
quelle
1
%Vor%

Dies ist eine Möglichkeit, mehr URLs zu übergeben ... wenn Sie mehr Werte in der doinbackground-Methode senden möchten.

%Vor%

Sie können die Klasse mit

aufrufen %Vor%     
Sandy09 28.05.2013 09:24
quelle
1

Ypu kann einen Konstruktor erzeugen, der verschiedene Typ-Parameter und auch String-Daten mit String ...... str

übergibt %Vor%     
PankajSharma 28.05.2013 09:26
quelle
0
%Vor%     
emdy 19.01.2017 20:27
quelle

Tags und Links