2010-11-02 14 views
7

Cuando cambio la aplicación de orientación se reinicia y pierdo mis datos actuales ... Estoy usando un grupo de actividades que contiene muchas actividades cuando cambio la aplicación de orientación se reinicia desde la actividad principal.La aplicación de Android se reinicia en el cambio de orientación

¿es posible evitar esta aplicación reiniciar en el cambio de orientación?

Alguien sabe por favor hágamelo saber ..

Respuesta

9

Android reinicia las actividades cada vez que el cambio de orientación por defecto.

Deberá guardar sus datos/estado llamando al onSaveInstanceState() antes de que Android destruya las actividades.

un vistazo aquí: Handling Runtime Changes

Este SO question también demuestra ser una buena lectura en la comprensión de la forma en que podría tratar con él.

Puede evitar esto agregando android:configChanges="orientation" a su actividad en el archivo AndroidManifest.

Fuente: http://developer.android.com/guide/topics/manifest/activity-element.html#config

+1

Estaba utilizando grupos de actividades y en cada actividad o lanzamiento de grupo, mi aplicación se comunica con el servidor y obtiene datos. Por lo tanto, no fue posible manejar el cambio de configuración de cada actividad. En cambio, mantengo la orientación fija y uso el oyente para el cambio de orientación y luego uso XML separado para el paisaje y el retrato. Esto evita el reinicio de la aplicación y también guarda mis datos. – sachin

1

Así es como se supone que debe funcionar. Hay una forma de que no lo haga, pero debe seguir el ciclo de vida y ser capaz de manejar los reinicios de actividad correctamente. Esto se ha preguntado aquí muchas veces.

1

Se podría decir que el sistema de ignorar los cambios con el siguiente:
<activity android:name="SomeActivity" android:configChanges="keyboardHidden|orientation">

pero yo sugeriría que no hacerlo porque esto es a menudo una indicación de problemas subyacentes que están por surgir.

Mi consejo es que simplemente agregue una nueva clase que manejará la reanudación de todas las operaciones largas o cualquier modificación de actividad.

+0

Sé que la respuesta es antigua ('10) pero esta debería ser la primera y la aceptada – HAlexTM

1

Hay buena información en la documentación de la API sobre por qué la actividad actual se destruye y se reconstruye. Me pareció muy esclarecedor la última vez que trabajé en algo relacionado.

A menos que se especifique lo contrario, un cambio de configuración (como un cambio en la orientación de la pantalla [...]) hará que su actividad actual a ser destruido, pasando por el proceso de la actividad del ciclo de vida normal de onPause(), onStop() y onDestroy() según corresponda. Si la actividad había estado en primer plano o era visible para el usuario, una vez que se llama a onDestroy() en esa instancia , se creará una nueva instancia de la actividad, con cualquier instancia de instancia guardada que la instancia anterior haya generado desde OnSaveInstanceState (Bundle)

http://developer.android.com/reference/android/app/Activity.html#ConfigurationChanges

10

si su androide: targetSdkVersion = "12" o menos

androide: configChanges = "orientación | keyboardHidden">

si su androide: targetSdkVersion = "13" o más

android: configChanges = "orientation | keyboardHidden | screenSize">

Cuestiones relacionadas