2010-11-28 10 views
7

Estoy viendo un flujo de actividad interesante cuando Android desactiva la pantalla y bloquea la pantalla ... mi aplicación sigue el flujo normal, onCreate, onStart y onResume. Entonces, dejo que mi teléfono se siente allí. Cuando la pantalla se pone negra, se invoca onPause. Esta bien. Luego, 5 segundos después, la aplicación se destruye (onStop, onDestroy). Eso está bien también. Pero se llama a inmediatamente después de llamar a onDestroy, onCreate, onStart y onResume, reiniciando la aplicación aunque la pantalla esté en blanco. La aplicación tiene un tiempo de carga, y reproduce un sonido cuando se inicia, por lo que es bastante espeluznante cuando el teléfono que estableciste hace 30 segundos comienza a reproducir sonidos. ¿Por qué Android mata la aplicación y luego la reinicia? Target es 2.1-update, y el teléfono es Samsung Captivate. ¿Alguien más está viendo esto y sabe una forma de detenerlo?Funky comportamiento de la actividad de Android cuando la pantalla se apaga?

Respuesta

3

Puede que no sea lo que está viendo, pero en mi teléfono sucede algo como esto porque el modo de suspensión siempre tiene una orientación, y si la aplicación estaba en la otra, se destruye y recrea en la orientación de suspensión. .. bastante subóptimo si me preguntas.

Me parece que es posible que no tenga cosas como su sonido de inicio vinculado a causas suficientemente específicas. ¿Qué sucede si gira el teléfono mientras está "encendido"? En cualquier caso, debería ser capaz de detectar que la pantalla no está encendida y no hacer (o diferir) un inicio real.

Si un cambio de orientación implícito es el culpable, puede cambiar la forma en que su aplicación se trata con estos: configure las cosas para afirmar que su aplicación puede cambiar sobre la marcha en lugar de tener que volver a crearla.

+0

Creo que Chris Stratton es correcto aquí. También puede encontrar un poco más de información sobre cómo lidiar con esto en esta pregunta relacionada: http://stackoverflow.com/questions/456211/activity-restart-on-rotation-android – Nailuj

+0

La aplicación está bloqueada en el modo horizontal. Cambiar la orientación mientras se está ejecutando no tiene ningún efecto. Pero puedo ver cómo Android podría estar tratando de reiniciarlo en modo retrato durante la suspensión. Es hora de ir a buscar rutinas que puedan decirme si la pantalla está encendida o apagada. – dwrussell2

+0

Es posible que desee intentar ver Logcat mientras la pantalla se queda dormida; si tiene una máquina de desarrollo unix, puede hacer algo como adb logcat | tee logfile y retroceda y mire más adelante. Si está haciendo lo de orientación para dormir, verá esto en el archivo de registro –

3

en el manifiesto de la actividad, para cada aplicación añadir:

android:configChanges="orientation|keyboardHidden" 

Esto le dice a Android va a manejar estos dos casos se - aunque por supuesto que estás mintiendo: no hacer mierda para manejarlos , pero Android no lo sabe. Esto funciona de maravilla para aplicaciones/juegos/etc. que se ejecutan, por ejemplo, en modo horizontal y nunca cambian la orientación.

+0

Gracias! Funciona solo de esta manera android: configChanges = "orientation", pero fue bueno para mí. –

Cuestiones relacionadas