Tengo una aplicación que comienza a reproducir sonidos y comienza/reanuda el juego en el método onResume(), pero lo que noto es que si mi aplicación fue la última en ejecutar cuando puse el teléfono en modo de espera (pantalla apagada), y solo presiono el botón de Menú para verificar la hora, luego el teléfono comienza a jugar y suena en segundo plano (la aplicación no está realmente visible, solo aparece la pantalla con la fecha/hora, sin embargo, debe haber sido invocado el mi aplicación). ¿Qué debo hacer aquí? ¿Hay alguna manera de discernir qué está reactivando la aplicación y luego agregar una declaración condicional que solo comienza el juego cuando la aplicación está realmente visible?Android - ¿Cómo manejar adecuadamente los métodos onPause/onResume?
Aquí hay un fragmento de mi 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();
}
La única cosa que puedo pensar en hacer para evitar que el juego se inicie siempre que la pantalla se excita (incluso cuando la aplicación no es visible) es para poner this.finish() como la última línea en onPause() ... pero eso te obliga a reiniciar la aplicación cada vez que quieras volver a ella porque el preceso mismo fue eliminado (lo cual está bien porque mi onPause guarda persistente datos, pero no es una solución elegante).
Por favor ayuda.
Gracias por responder. He probado onStart()/onStop(), pero obtengo los mismos resultados ... el juego se reproduce en segundo plano, incluso cuando no está realmente visible. De acuerdo con la documentación, onStart() se llama beforeResume() (así que es por eso que no funciona en mi caso) y onStop() "nunca se puede llamar ..." – RyanM
Hmmmm ... Eso suena como el bloqueo la pantalla no se considera correctamente como tener el primer plano. ¿En qué dispositivo estás probando esto? – CommonsWare
Estoy usando un T-Mobile G1 (firmware de Android 1.6). – RyanM