Android Async-Task abbrechen / stoppen

8

Ich möchte wissen, was der beste Weg ist, um eine asynchrone Aufgabe zu beenden, wenn Sie sie ausführen.

Ich habe es versucht

%Vor%

Ich habe es auch versucht

%Vor%

Dies funktioniert besonders, wenn es mit einem Ereignis verknüpft ist.

Aber angenommen, das Szenario ist --- es gibt 4 AsyncTask. Rufen Sie zuerst den zweiten, zweiten Anruf den dritten und dritten Anruf an. Wenn der Benutzer die Aktivität eingibt, gibt es keine Dialogbox. Sonst hätten wir dort die onCancel-Methode verwenden können. Wenn der Benutzer auf eine beliebige Stelle auf der Seite klickt, wird das Dialogfeld angezeigt, wenn der Benutzer nicht auf eine beliebige Stelle klickt, dann wird kein Dialogfeld angezeigt, aber die asynchrone Aufgabe läuft im Hintergrund weiter. Nehmen Sie an, dass der Benutzer auf die Schaltfläche "Zurück" oder auf das Navigationssymbol für die Startseite klickt page user.is wird aus der aktuellen Aktivität entfernt. Die asynchrone Aufgabe wird jedoch im Hintergrund ausgeführt und die App stürzt schließlich ab. Ich habe die Methode Abbrechen in OnBackPressed verwendet. Aber das Problem ist, Sie können nicht sicher sein, welche Aufgabe ausgeführt wird und App-Carshes wieder.

Was ist der Ausweg?

    
D-D 27.11.2012, 13:14
quelle

3 Antworten

12

behalte den Verweis auf das AsyncTask-Objekt als Instanzvariable und dann in onDestroy () tue dies

%Vor%     
Abhishek Chauhan 27.11.2012, 13:18
quelle
3

In Ссылка gibt es eine Sitzung namens Threading-Regeln, die besagt, dass AsyncTasks-Instanzen erstellt werden müssen Der UI-Thread und die Ausführung müssen im UI-Thread aufgerufen werden. Wenn Sie execute vom UI-Thread aus aufrufen, können Sie den Thread abbrechen, indem Sie yourTaskInstance.cancel aufrufen (true);

    
alex 27.11.2012 13:24
quelle
0

Ich bin mir nicht ganz sicher, wann Sie Ihre Aufgaben abbrechen möchten, aber hier sind ein paar Vorschläge: a) Behalten Sie einen Verweis auf jede laufende Aufgabe. b) Fügen Sie Ihrem Dialog einen Ablehnungs-Listener hinzu und brechen Sie alle Aufgaben dort ab (wenn Sie das möchten). c) alle Aufgaben beim onStop-Callback Ihrer Aktivität abbrechen (falls Sie das noch einmal machen möchten).

    
Tas Morf 27.11.2012 13:22
quelle