Ich möchte zwingen, AsyncTask abzubrechen. Ich sehe, dass Sie isCancelled() wie in this valid solution (was unter der Haube AtomicBoolean verwendet verwenden könnenUm das Abbrechen von AsyncTask zu erzwingen, sollte das Flag in DoInBackground nicht periodisch flüchtig sein?
Aber ich sehe Lösungen wie suspiciousSolution1, suspiciousSolution2, suspiciousSolution3, wo es neue Flagge private boolean isTaskCancelled = false;
eingeführt ist
Und ich begann fragen -.. Da das flag wird in
modifiziertenpublic void cancelTask(){
isTaskCancelled = true;
}
, die auf einigen Faden läuft, und wird in
gelesen, die in WorkerThread läuft, dann sollte das Flag isTaskCancelled
flüchtig sein (oder AtomicBoolean wie in der Google-Implementierung).
ja, ist es wahrscheinlich – thepoosh
Gemäß Google-Richtlinien volatil sein sollte, AsyncTask sollte dafür sehr kleine Funktion verwendet werden. Es sollte keine größeren Schleifen oder schwerere Aufgaben ausführen. Verwenden Sie für solche Features entweder Handler und Runnable oder Hintergrunddienst. Die Flagge ist vorhanden, wird aber nur zu Beginn Ihrer if-Bedingung validiert. Die Aufgabe kann oder kann nicht sofort wie gewünscht abgebrochen werden. – chejaras
Danke, aber Sie kommentieren die Frage nicht beantwortet. –