Comment éviter de redémarrer l’activité lorsque l’orientation change sur Android

Je crée une application Android dans laquelle je dessine une vue sur une canvas. Lorsque l’orientation du périphérique change, l’activité redémarre. Je ne le veux pas.

Comment puis-je éviter de redémarrer l’activité lorsque l’orientation change?

Il y a plusieurs façons de le faire, mais comme indiqué ici , en utilisant

android:configChanges="keyboardHidden|orientation|screenSize" 

selon vos besoins, vous permet d’écouter les modifications de configuration. Vous répondez ensuite à ces modifications en onConfigurationChanged et en appelant setContentView .

C’est comme ça que je l’ai fait, mais ça m’intéresserait de connaître les pensées des autres.

Définissez votre activité dans le fichier AndroidManifest.xml comme suit:

    

Vérifiez dans votre fichier manifeste Android que vous avez écrit android:configChanges="orientation" sur l’activité.

Je recommanderais l’utilisation de fragments. Vous pouvez simplement utiliser setRetainInstance(true) pour indiquer que vous souhaitez conserver votre fragment.

Ajouter android:configChanges="keyboardHidden|orientation" à votre activity

Pour les utilisateurs de xamarin,

Pour éviter le redémarrage de l’application lors du changement d’orientation dans Android, ajoutez
ConfigurationChanges = Android.Content.PM.ConfigChanges.Orientation | Android.Content.PM.ConfigChanges.ScreenSize ConfigurationChanges = Android.Content.PM.ConfigChanges.Orientation | Android.Content.PM.ConfigChanges.ScreenSize à l’atsortingbut d’activité de toutes les classes d’activité. Par exemple, voici mon code démo

  [Activity(Label = "DemoApp", ConfigurationChanges = Android.Content.PM.ConfigChanges.Orientation | Android.Content.PM.ConfigChanges.ScreenSize)] public class MainActivity : global::Xamarin.Forms.Platform.Android.FormsApplicationActivity { protected override void OnCreate(Bundle bundle) { //Some code here } } 

J’ai essayé d’écrire android:configChanges="keyboardHidden|orientation|screenSize" dans la balise d’activité, mais ne fonctionne pas.

J’ai essayé beaucoup de méthodes mais rien ne fonctionne jusqu’à ce que android:configChanges="keyboardHidden|orientation|screenSize" pour toutes les activités de l’application et cela fonctionne parfaitement.

Ajoutez ceci à toutes vos activités dans le manifeste.

 android:configChanges="orientation|screenSize" 

Exemple:

  

Pour éviter le redémarrage sur l’ keyboardHidden|orientation – Comment désactiver le changement d’orientation dans Android?
Veuillez suivre le guide de l’API Android – Gestion des changements d’exécution
Utilisation de la classe d’application – redémarrage de l’activité en rotation Android

Il suffit d’append android: configChanges = “keyboardHidden | orientation | screenSize” pour toutes les activités de l’application dans le fichier manifeste

Déclarez ceci dans votre AndroidManifest.xml

  

Mais attention , Android Developers Documentation dit que vous ne devriez le faire que s’il n’ya pas de meilleures options.

Remarque: L’utilisation de cet atsortingbut doit être évitée et utilisée uniquement en dernier recours. Veuillez lire Modifications dans la gestion du runtime pour plus d’informations sur la manière de gérer correctement un redémarrage en raison d’un changement de configuration.

Si vous êtes sûr de le faire, vous pouvez gérer les modifications de configuration par vous-même en utilisant la méthode onConfigurationChanged () .