如何避免Android上的方向更改时重新启动活动

我正在创build一个Android应用程序,在该应用程序中,我正在canvas上绘制一个视图。 当设备的方向改变时,活动重新开始。 我不想要它。

如何避免在方向更改时重新启动活动?

有不同的方式来做到这一点,但在这里给出,使用

android:configChanges="keyboardHidden|orientation|screenSize" 

如果您需要,可以让您监听configuration更改。 然后通过覆盖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> 

检查你的Android清单文件,你已经写了android:configChanges="orientation"的活动..

我会build议使用碎片。 你可以简单地使用setRetainInstance(true)来通知你想保留你的片段。

android:configChanges="keyboardHidden|orientation"到您的activity

对于Xamarin用户,

要避免应用程序在Android中更改方向,请添加
ConfigurationChanges = Android.Content.PM.ConfigChanges.Orientation | Android.Content.PM.ConfigChanges.ScreenSize 所有Activity类的ConfigurationChanges = Android.Content.PM.ConfigChanges.Orientation | Android.Content.PM.ConfigChanges.ScreenSize属性。 例如,下面是我的演示代码

  [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指南 – 处理运行时更改
使用应用程序类 – Activity在Android上重新启动

将其添加到清单中的所有活动中。

 android:configChanges="orientation|screenSize" 

例:

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

我尝试在activity标签中写入android:configChanges="keyboardHidden|orientation|screenSize" ,但是不起作用。

我尝试了很多方法,没有任何工作,直到我为所有的应用程序活动添加android:configChanges="keyboardHidden|orientation|screenSize"并且它完美地工作。

只需为清单文件中的所有应用程序活动添加android:configChanges =“keyboardHidden | orientation | screenSize”即可