Android - Wie behandelt man onPause / onResume-Methoden richtig?

8

Ich habe eine App, die mit dem Abspielen von Sounds beginnt und das Gameplay in der onResume () -Methode startet / wieder aufnimmt, aber was ich merke ist, dass meine App die zuletzt ausgeführte Anwendung war, als ich das Telefon in den Standby-Modus brachte (Bildschirm aus) , und ich drücke einfach die Menü-Taste, um die Uhrzeit zu überprüfen, dann beginnt das Telefon das Spiel zu spielen und ertönt im Hintergrund (die App ist eigentlich nicht sichtbar, nur der Bildschirm mit dem Datum / der Uhrzeit ist noch onResume muss aufgerufen worden sein in meiner App). Was soll ich hier machen? Gibt es eine Möglichkeit zu erkennen, was die App reaktiviert, und dann eine bedingte Anweisung hinzuzufügen, die das Spiel erst startet, wenn die App tatsächlich sichtbar ist?

Hier ist ein Ausschnitt aus meinem onResume:

%Vor%

Das Einzige, was ich tun kann, um zu verhindern, dass das Spiel startet, wenn der Bildschirm eingeschaltet wird (selbst wenn die App nicht sichtbar ist), ist this.finish () als letzte Zeile in onPause (). .. aber das zwingt Sie, die App jedes Mal neu zu starten, wenn Sie zurückgehen wollen, weil der Prozess selbst beendet wurde (was gut ist, weil mein onPause persistente Daten speichert, aber es ist keine elegante Lösung).

Bitte helfen Sie.

    
RyanM 22.04.2010, 14:13
quelle

2 Antworten

8

Haben Sie erwogen, zu onStart() und onStop() anstatt zu onResume() und onPause() ?

zu wechseln?     
CommonsWare 22.04.2010, 15:45
quelle
4

Ich hatte das gleiche Problem (ich hatte meinen Musikplayer bei onResume()/onPause() ) und die beste Lösung, die ich gefunden habe, besteht darin, meine Aktivität anzuhalten und fortzusetzen, wenn sie im Vordergrund ist, die Sie mit public void onWindowFocusChanged (boolean hasFocus) Callback.

Bearbeiten: Dies in einer alten und leicht falschen Antwort - korrekte Antwort wird im Android Developers Blog beschrieben: Android-Spiele, die gut spielen

    
MichalisB 15.08.2011 13:40
quelle

Tags und Links