android – 仍然使用configChanges重新创建Activity

据我了解,如果您在清单中的活动中插入’
android:configChanges =“orientation”’,活动将不会被销毁并在方向更改时重新创建.为了测试这个,我创建了一个简单易用的应用程序.然后我在清单中插入了’android:configChanges =“orientation”’.然后我添加了以下方法:

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

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

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

无论如何,这整个活动和定位的事情让我发疯.

最佳答案

However, I’m still seeing onCreate() being called. The activity is still being recreated.

仿真器使用侧滑块键盘模拟设备.与您匹配的android:configChanges值将是keyboardHidden,通常与处理非键盘设备的方向一起使用(例如,android:configChanges =“keyboardHidden | orientation”).

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

点赞