【问题标题】:Activity still recreated with configChangesActivity 仍然使用 configChanges 重新创建
【发布时间】:2012-01-16 17:00:54
【问题描述】:

据我了解,如果您将 'android:configChanges="orientation"' 插入清单中的活动,则活动不会在方向更改时被销毁和重新创建。为了测试这一点,我创建了一个非常简单的应用程序,它什么都不做。然后我在清单中插入了 'android:configChanges="orientation"'。然后我添加了以下方法:

@Override
public void onConfigurationChanged(Configuration newConfig) {
    Log.v(TAG,"onConfigurationChanged:");
    super.onConfigurationChanged(newConfig);
}

但是,我仍然看到 onCreate() 被调用。该活动仍在重新创建中。

好像这还不够奇怪,当我将模拟器置于横向模式 (Ctrl-F11) 时,我没有看到 onConfigurationChanged() 被调用。只有当我回到纵向模式时才会调用它。不应该双向调用吗?当我进入横向和纵向模式时,配置(方向)不会改变吗?这毫无意义。

无论如何,这整个活动和方向的事情让我发疯了。

【问题讨论】:

    标签: android


    【解决方案1】:

    您的屏幕尺寸从 1200x800 变为 800x1200(例如)。

    从 API 13 开始,这也将引发 screenSize 配置更改。解决方法是:

    android:configChanges="keyboardHidden|oritentation|screenSize"
    

    【讨论】:

      【解决方案2】:

      但是,我仍然看到 onCreate() 被调用。该活动仍在重新创建中。

      模拟器模拟带有侧滑键盘的设备。与您的 - 匹配的 android:configChanges 值将是 keyboardHidden,通常与 orientation 结合使用以处理非键盘设备(例如,android:configChanges="keyboardHidden|orientation")。

      话虽如此,在大多数情况下不建议使用android:configChanges。使用动态片段和setRetainInstance(true),或使用onSaveInstanceState() 和onRetainNonConfigurationInstance() 允许销毁和重新创建活动。

      【讨论】:

        猜你喜欢
        • 2013-05-11
        • 2014-07-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-06-12
        • 1970-01-01
        • 1970-01-01
        • 2013-06-28
        相关资源
        最近更新 更多