Как избежать перезапуска активности при изменении ориентации на Android

Я создаю приложение Android, в котором я рисую представление на холсте. Когда ориентация устройства изменяется, активность перезапускается. Я не хочу этого.

Как избежать перезапуска активности при изменении ориентации?

Solutions Collecting From Web of "Как избежать перезапуска активности при изменении ориентации на Android"

Существуют различные способы сделать это, но как указано здесь , используя

android:configChanges="keyboardHidden|orientation|screenSize" 

Как вам нужно, позволяет вместо этого прослушивать изменения конфигурации. Затем вы отвечаете на эти изменения, переопределяя onConfigurationChanged и вызывая setContentView .

Так я это делал, но мне было бы интересно узнать мысли других людей.

Определите свою активность в AndroidManifest.xml следующим образом:

  <activity android:name="com.name.SampleActivity" android:configChanges="keyboardHidden|orientation|screenSize" android:icon="@drawable/sample_icon" android:label="@string/sample_title" android:screenOrientation="portrait" > </activity> Размер  <activity android:name="com.name.SampleActivity" android:configChanges="keyboardHidden|orientation|screenSize" android:icon="@drawable/sample_icon" android:label="@string/sample_title" android:screenOrientation="portrait" > </activity> 

Проверьте свой файл манифеста Android, который вы написали android:configChanges="orientation" на активность.

Я бы рекомендовал использовать фрагменты. Вы можете просто использовать setRetainInstance(true) чтобы уведомить вас о том, что вы хотите сохранить свой фрагмент.

Добавить android:configChanges="keyboardHidden|orientation" для вашей activity

Для пользователей xamarin,

Чтобы избежать перезагрузки приложения при изменении ориентации в Android, добавьте
ConfigurationChanges = Android.Content.PM.ConfigChanges.Orientation | Android.Content.PM.ConfigChanges.ScreenSize ConfigurationChanges = Android.Content.PM.ConfigChanges.Orientation | Android.Content.PM.ConfigChanges.ScreenSize для атрибута Activity всех классов активности. Например, ниже приведен мой демо-код

  [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 } } 

Чтобы избежать перезагрузки на keyboardHidden|orientation – Как отключить изменение ориентации в Android?
Пожалуйста, следуйте руководству Android API – Обработка изменений времени выполнения
Использование класса приложения – перезагрузка активности при ротации Android

Добавьте это ко всем вашим действиям в манифесте.

 android:configChanges="orientation|screenSize" 

Пример:

 <activity android:name=".activity.ViewActivity" android:label="@string/app_name" android:configChanges="orientation|screenSize"/> 

Я пытаюсь написать android:configChanges="keyboardHidden|orientation|screenSize" в теге активности, но не работает.

Я пытаюсь использовать множество методов, и ничего не работает, пока я не android:configChanges="keyboardHidden|orientation|screenSize" для всех приложений и работает отлично.

Просто добавьте android: configChanges = "keyboardHidden | orientation | screenSize" для всех действий приложения в файле манифеста