2010-11-02 9 views
7

Lorsque je change d'application d'orientation redémarre et j'ai perdu mes données actuelles .. J'utilise un groupe d'activités qui contient beaucoup d'activités lorsque je change l'application d'orientation redémarre de l'activité principale.L'application Android redémarre sur changement d'orientation

est-il possible d'éviter le redémarrage de cette application lors du changement d'orientation?

Tout le monde sait s'il vous plaît laissez-moi savoir ..

Répondre

9

Android redémarre les activités à chaque fois que le changement d'orientation par défaut.

Vous devrez sauvegarder vos données/état en appelant onSaveInstanceState() avant qu'Android ne détruise les activités.

Jetez un oeil ici: Handling Runtime Changes

Cette SO question se révèle aussi être une bonne lecture pour comprendre comment vous pourriez faire face.

Vous pouvez empêcher cela en ajoutant android:configChanges="orientation" à votre activité dans le fichier AndroidManifest.

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

+1

J'étais en utilisant des groupes d'activités et sur chaque activité ou groupe, lancez mon application communiquez avec le serveur et récupérez les données. Il n'était donc pas possible de gérer la modification de configuration de chaque activité. Au lieu de cela, je garde l'orientation fixe et j'utilise l'écouteur pour changer l'orientation, puis j'utilise un XML séparé pour le paysage et le portrait. Cela évite le redémarrage de l'application et enregistre également mes données. – sachin

1

Voici comment il est censé fonctionner. Il existe un moyen de ne pas le faire, mais vous devez suivre le cycle de vie et être capable de gérer les redémarrages d'activité avec élégance. Cela a été demandé ici plusieurs fois.

1

Vous pouvez indiquer au système d'ignorer les changements avec les éléments suivants:
<activity android:name="SomeActivity" android:configChanges="keyboardHidden|orientation">

mais je suggère de ne pas le faire parce que cela est souvent une indication des problèmes sous-jacents qui sont encore à émerger.

Mon conseil est que vous ajoutez simplement une nouvelle classe qui traitera la reprise de toutes les opérations longues ou de toute modification d'activité.

+0

Je sais que la réponse est ancienne ('10) mais cela devrait être le premier et le accepté – HAlexTM

1

La documentation de l'API contient de bonnes informations sur les raisons pour lesquelles l'activité en cours est détruite et reconstruite. Je l'ai trouvé très éclairant la dernière fois que j'ai travaillé sur quelque chose en rapport.

Sauf indication contraire, un changement de configuration (par exemple un changement d'orientation de l'écran [...]) provoquera l'activité en cours à détruire, en passant par le processus du cycle de vie de l'activité normale de OnPause(), onStop(), et onDestroy() selon le cas. Si l'activité avait été au premier plan ou visible à l'utilisateur, une fois onDestroy() est appelé dans cette instance alors une nouvelle instance de l'activité sera créée, avec tout ce que savedInstanceState a généré de l'instance précédente onSaveInstanceState (Bundle).

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

10

si votre android: targetSdkVersion = "12" ou moins

android: configChanges = "orientation | keyboardHidden">

si votre android: targetSdkVersion = "13" ou more

android: configChanges = "orientation | clavierHidden | taille d'écran">

Questions connexes