0

Ich habe 2 Klassen namens A und B. Klasse B enthält eine statische Funktion namens berechnen, die einen asynchronen Netzwerkaufruf durchführt und die Daten lokal speichert.Wird der Aufruf der statischen Funktion überschrieben

Ich wollte wissen, ob der folgende Code die asynchrone Aufgabe in der Calculate-Funktion beenden wird.

Class A 
{ 
B.calculate(); // performs long running async task 
B.calculate(); // the above call to calculate has not finished but this was called 
} 

Wird die Asynchron-Aufgabe, die aus dem ersten Aufruf gestartet weiterhin berechnen Ausführung oder wird es zerstört und eine neue Aufgabe geschaffen werden?

Antwort

0

Nein, das erneute Ausführen einer AsyncTask führt nicht zum Erlöschen des Originals. Stattdessen wird der asynchronen Taskwarteschlange eine neue Task hinzugefügt (da standardmäßig nur jeweils 1 asynchrone Task ausgeführt wird), die schließlich ausgeführt wird und eine zweite Netzwerkanforderung verursacht.

(Hinweis: Die oben vorausgesetzt, dass Sie eine neue Instanz der AsycTask Unterklasse erstellen Wenn Sie versuchen, erneut die gleiche Instanz ausführen, erhalten Sie eine Ausnahme bekommen..)

+0

ich plante Nachrüstung mit dem Einschalten und rxjava Um die Anrufe zu tätigen, wird das gleiche auch in diesem Fall passieren? Die gewünschte Funktionalität, die ich benötige, ist, dass die Netzwerkanrufe mit ihren jeweiligen Daten stattfinden, egal wie oft calculate aufgerufen wird. –

+0

Keine Ahnung, hängt davon ab, wie Sie es implementieren. Oder Sie können es mit AsyncTask arbeiten lassen, wenn Sie sich etwas anstrengen möchten. Sie müssen den Überblick behalten, wenn Sie eine laufende Aufgabe haben, und falls nicht, eine zweite Aufgabe starten. –

Verwandte Themen