onBackPressed, um einen Handler innerhalb einer Aktivität zu töten - Android

8

Wie Sie sehen können, habe ich diese PlayLesson_01-Aktivität, die Bilder und Audio gleichzeitig anzeigt. Diese Aktivität hat zwei Handler, einen zum Steuern von Bildern und Audio, während der andere die Lektion beendet und zu vorherigen Aktivitäten zurückkehrt (Lessons Menu).

Ziel : Klicken Sie auf die Schaltfläche Zurück, um zur vorherigen Aktivität zurückzukehren und die Wiedergabe von Bildern und Audio zu beenden.

Problem : Wenn ich hart auf "Zurück" klicke, kann ich zur vorherigen Aktivität zurückkehren, aber der Ton wird noch wiedergegeben. Ich kann nicht stoppen oder kill den Handler, der innerhalb der Aktivität gestartet wurde.

Frage : Wie kann ich diese Handler vollständig töten oder stoppen?

%Vor%

}

    
Jawwalcom 02.07.2012, 18:48
quelle

2 Antworten

42

Jetzt gibt es ein paar falsche Dinge in Ihrem Code:

  1. Wenn Sie zu Ihrer vorherigen Aktivität zurückkehren möchten, starten Sie sie nicht erneut mit startActivity , da das Standardverhalten von android darin besteht, dass ein Stapel früherer Aktivitäten beibehalten wird. Bei Drücken von back wird standardmäßig zur vorherigen Aktivität zurückgegangen (es sei denn, Sie haben die untergeordnete Aktivität mithilfe einiger Flags gestartet.)

  2. Warum benutzen Sie System.exit(0); beim Zurückdrucken? Sie müssen nur finish() aufrufen, um die aktuelle Aktivität zu beenden.

  3. Der beste Weg, um Callbacks von einem Handler zu entfernen, ist die Verwendung von null als Parameter. Sie können den folgenden Code versuchen:

    %Vor%

    , da dies alle Rückrufe entfernen würde. Klicken Sie auf diesen Link, um mehr zu erfahren: Ссылка

Arun George 02.07.2012, 19:09
quelle
0

Ihr Handler läuft nicht, Ihr Media Player ist. Rufen Sie einfach mp.stop() in onBackPressed() auf.

Auch was Arun George gesagt hat.

    
Timo Ohr 02.07.2012 19:13
quelle