Gängige Praxis zum Nutzen von AsyncTasks auf anderen Activities

lordzwieback

lordzwieback

Erfahrenes Mitglied
210
Guten Morgen,

nach einigem Rumsuchen bin ich doch wieder hier gelandet. :)

Folgendes Szenario:
Actvity_A besitzt einige AsyncTasks. Wie erhalte ich Zugriff auf diese Tasks, um sie von Activity_B aus aufzurufen und durchzuführen? Beziehungsweise was ist dafür die gängige Praxis? Diese Tasks nutzen teilweise String/Bool-Werte aus Layoutelementen von Activity_A (Verbindungsdaten, Passwort, welches User eingibt usw..) als Parameter. Wie muss ich das handhaben?

Ich habe gestern mal aus Neugier geschaut, was passiert, wenn ich die betroffenen AsyncTasks public anstatt private mache und die Layoutelemente, die ich brauche auf public static, das war aber glaube ich keine gute Idee. Hab das dann auch fix wieder rückkgängig gemacht.

Grüße
 
Moin ,
das sind mehrere Fragen auf einmal und leider verschachtelt :)

zu a) warum schreibst du dir nicht eine public Funktion "start_my_task_a" in Activity_A und startest den Task darin ? (Woher auch immer)


zu b) Zuden Parametern - jetzt biste an das nächste Nadelöhr von Android gelangt

Static : : GANZ Böse , nur wenn es überhaupt nicht mehr geht !!
Wenn du "global" auf Daten zugreifen möchtest , dann solltest du dir mal die Technik von SingleTon Classes anschauen
oder Application, wobei ich separate SingleTon bevorzuge

Nachtrag : ich würde grundsätzlich vermeiden, direct von Activity_B aus auf die GUI elemente der Activity_A zuzugreifen,
schreib dir dazu lieber eine public Funktion in Activity_A (refresh_my_elements(whatever)

Ich glaube , du hast nun den Punkt erreicht , indem du zu viel miteinender Kommunizieren lassen
möchtest. Du musst dann mehr OOP splitten.
(z.b. deinen AsynTask_nr_1 in eine eigene Klasse und eigenem Java File und einen schönen Listener dazu)
 
Zuletzt bearbeitet:
Klingt wie ne Aufgabe fürs Wochenende.^^ Ich werd mich mal an deinen Stichworten orientieren und dann berichten, wies ausschaut, danke.

@swa00 EDIT: ich habe die Parameter, die ich für den async Aufruf benötige in meinen sharedpreferences gespeichert. Könnte ich dieses sharedpreference file nicht einfach in Activity_B aufrufen und mittels getString oder so mir die darin gespeicherten Daten in eine lokale Variable auf Activity_B speichern und weiter benutzen?
 
Zuletzt bearbeitet:
ch habe die Parameter, die ich für den async Aufruf benötige in meinen sharedpreferences gespeichert. Könnte ich dieses sharedpreference file nicht einfach in Activity_B aufrufen und mittels getString oder so mir die darin gespeicherten Daten in eine lokale Variable auf Activity_B speichern und weiter benutzen?

Öhm, was heisst "Shared" ? Weil sie nur an dem Ort verfügbar sind , indem sie erstellt wurden ? :)
Geht also, ist aber ziemlich ungewöhnlich - es gibt da "elegantere" Lösungen , Daten zwischen Activities auszutauschen
ohne jedes mal auf ein File zuzugreifen. (SingleTons,Application,Intents Extra Bundle,Broadcast)

Noch nen Tip fürs WE : Versuche mal dein AsynTask in eine eigene Klasse zu packen, und diese dann mit einem Listener auszustatten , wenn er fertig ist. (oder was auch immer) - SEHR schöne Technik !!


P.S ich komme ganz auf den Anfang zurück ( vor Tagen) - Da hatte ich dir mal angeraten , dir mal die Libraries von OkHTTP,Volley,ION
anzuschauen.

Weisste was die machen ? - DU wirst es nicht glauben :)

Ein Url Request mit filetransfer und wenn die fertig sind ( oder dran) schicken sie dir ein callback (Listener) :)
Aber du wolltest ja nicht hören :)
 
Alles klar. Ich seh schon, gibt viel zu tun. :D

Wenns was neues gibt, poste ich es. Werd mich mal reinarbeiten. :)
 

Ähnliche Themen

W
Antworten
2
Aufrufe
739
rene3006
R
M
Antworten
4
Aufrufe
1.168
swa00
swa00
B
Antworten
4
Aufrufe
470
bb321
B
Zurück
Oben Unten