2011-01-07 20 views
0

Ich habe diesen Beitrag hier gesehen (http://stackoverflow.com/questions/151777/how-do-i-save-an-android-applications-state). Ich habe ein ähnliches Problem, glaube ich.Android: Verwirrt über Anwendungsstatus

Ich habe eine App, die einen Audio-Stream (mit dem MediaPlayer-Objekt) abhört. Wenn ich die Home-Taste drücke, wird das Streaming fortgesetzt und meine App ausgeblendet. Dann kann ich zu einem späteren Zeitpunkt zu meiner App zurückkehren und auf "Stop" drücken, wenn ich fertig bin. Das ist was ich will. Wenn ich aber die Zurück-Taste drücke, wenn ich meine App später wieder öffne, wurde die App von Neuem neu gezeichnet. Textfelder, Schaltflächen, alles wurde zurückgesetzt, als hätte ich die App zum ersten Mal geöffnet, damit ich meinen Audiostream nicht stoppen kann. Ein Klick auf Stop macht nichts, weil die App "vergessen" hat, dass sie streamt (der Stream wird unter einem separaten Handler vom Haupt-UI-Thread ausgeführt, also nehme ich an, seit er zurückgesetzt wurde, hat er die Spuren seiner Handler verloren?).

Warum passiert das mit der Zurück-Taste, und wie kann ich es stoppen?

Antwort

0

Verschieben Sie die Streaming-Funktion in einen Android-Dienst. Verwenden Sie eine Aktivität, um sich an den Dienst zu binden und mit ihm zu interagieren.

+0

Das hinterlässt immer noch ein Problem, es muss nicht so sein, aber ich denke, es ist ein guter Punkt zu machen: Ich habe einen Knopf mit der Aufschrift "Start". Wenn Sie darauf klicken, wenn der Text "start" ist, wird der Handler gestartet, in dem der Stream ausgeführt wird, und der Text der Schaltfläche wird in "stop" geändert. Wenn Sie auf klicken und der Text "Stop" ist, wird der Stream gestoppt und der Text wird wieder auf "Start" gesetzt. – jwbensley

+0

Wenn ich den Knopf drücke und den Stream starte (und der Text der Schaltfläche ändert sich zu 'Stop'), drücke ich Zurück und gehe wie oben erwähnt zu meinem Geschäft, höre einen Stream und gehe später zurück zu meiner App, um den Stream zu stoppen. die Schnittstelle wird neu gezeichnet und der Knopf sagt "Start", also kann ich es nicht stoppen? Wenn Sie auf Start klicken, wird ein weiterer Stream gestartet, so dass nun zwei etwas außerhalb der Zeit ausgeführt werden. Wenn Sie dann auf Stopp drücken, wird diese neue Stream-Instanz gestoppt, die alte wird noch ausgeführt. Wenn ich einen Dienst mit einem einzigen Knopf wie diesem benutze, würde ich, wenn ich zur App zurückkehre, immer noch 'anfangen' und nicht 'anhalten' anfangen, richtig? – jwbensley

+0

Ja das ist richtig. Sie müssen den Status Ihrer Aktivität speichern. Oder wenn Sie einen Dienst verwenden, fragen Sie den Dienst, ob er einen laufenden Datenstrom hat. Wenn Sie auf Zurück drücken und die Aktivität neu starten, wird onCreate aufgerufen. Also benutze sowas wie saveInstanceState.getBoolean ("HAS_RUNNING_STREAM") – 0xf3f