强制活动方向会重新创建活动两次

时间:2015-01-27 10:57:31

标签: android android-activity screen-orientation

我正试图强制我的应用中的所有活动处于纵向或横向模式,向用户展示设置。

基本上在onCreate()我请求正确的方向,就像这样

@Override
protected void onCreate(final Bundle savedInstanceState) {
    setRequestedOrientation(SettingsHelper.getOrientation());
}

实际上它的作用是,如果我们将设备保持在纵向模式并且请求的方向是风景,那么它只是以纵向模式创建活动,然后它在景观中重现它。在高端设备上这是可以接受的,因为它是瞬时的,但是在低端设备上它是一场灾难,因为在创建和娱乐之间有5秒的延迟...

我已经尝试过: - 不仅在onCreate中的onResume中执行此操作 - 在清单android中定义:screenOrientation =“nosensor” - 在清单android中定义:screenOrientation =“后面” - 在清单android中定义:screenOrientation =“unspecified” - 在清单android中定义:configChanges =“orientation”

你知道如何阻止双重创作吗?

1 个答案:

答案 0 :(得分:0)

在AndroidManifest.xml的活动代码中添加此行

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

示例:

   <activity
         android:name=".MainActivity"
        android:label="@string/app_name" 
        android:configChanges="keyboardHidden|orientation|screenSize">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>