Ho un'app che inizia a riprodurre suoni e avvia/riprende il gameplay nel metodo onResume(), ma quello che sto notando è che se la mia app era l'ultima applicazione in esecuzione quando mettevo il telefono in standby (schermo spento), e premo semplicemente il pulsante Menu per controllare l'ora, quindi il telefono inizia a giocare e suona in sottofondo (l'app non è effettivamente visibile, solo lo schermo con la data/ora è, ma onResume deve essere stato chiamato in la mia app). Cosa devo fare qui? C'è un modo per discernere cosa sta riattivando l'app e quindi aggiungere un'istruzione condizionale che avvia il gioco solo quando l'app è effettivamente visibile?Android - Come gestire correttamente i metodi onPause/onResume?
Ecco un frammento del mio onResume:
@Override
protected void onResume()
{
mySaveGame = Utilities.loadSavegame(this);
//check the savegame
if(mySaveGame!=null)
{
//start game using savegame values
this.startFromSavedGame(mySaveGame.getIsLevelComplete());
}
else
{
//run the 1st-run components
this.startFirstRun();
}
super.onResume();
}
L'unica cosa che posso pensare di fare per evitare che il gioco di avviarsi quando lo schermo viene acceso (anche quando l'applicazione non è visibile) è per mettere this.finish() come ultima riga in onPause() ... ma questo ti obbliga a riavviare l'app ogni volta che vuoi tornare ad esso perché il precessore stesso è stato ucciso (il che va bene perché il mio onPause salva persistente dati, ma non è una soluzione elegante).
Per favore aiuto.
Grazie per la risposta. Ho provato onStart()/onStop(), ma ottengo gli stessi risultati ... il gioco viene eseguito in background anche quando non è effettivamente visibile. Secondo la documentazione, onStart() viene chiamato prima onResume() (ecco perché non funziona nel mio caso) e onStop() "non può mai essere chiamato ..." – RyanM
Hmmmm ... Sembra il blocco lo schermo non è considerato come se avesse il primo piano. Su quale dispositivo stai testando questo? – CommonsWare
Sto usando un T-Mobile G1 (firmware per Android 1.6). – RyanM