Wie man mehr Werte in doInBackground
Mein AsyncTask
sieht so aus.
Ist es irgendwie möglich, mehr Werte auf meinem protected String DoInBackground
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?
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%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!
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.
Ypu kann einen Konstruktor erzeugen, der verschiedene Typ-Parameter und auch String-Daten mit String ...... str
übergibt %Vor%Tags und Links android