我已经在我的一个 Activity 上实现了 onRetainNonConfigurationInstance() 来处理 android 屏幕方向。这是代码:
@Override
public Object onRetainNonConfigurationInstance() {
Log.d("[DEBUG]", "onRetainNonConfigurationInstance : "
+ this.getClass().getName());
MyState state = new MyState();
return state;
}
然后我在安卓设备上安装了该应用程序。这是配置:
Device : Samsung Nexus S
Android version : 4.0.4
Kernel version : 3.0.8-g6656123android-build@vpbs1 #1
当我通过更改屏幕方向在手机上调试应用程序时,不会调用我的onRetainNonConfigurationInstance()方法。
更奇怪的是,我在我的 Activity的onCreate()方法中添加了一个日志行。根据文档,Android 应该在屏幕方向发生时重新创建活动。所以我有以下内容:
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.mylist);
Log.d(Constants.LOG_TAG, "Oncreate : " + this.getClass().getName());
}
但是在这里,当我在设备上更改屏幕方向时,不会调用onCreate()方法。
你有没有遇到过这个问题?
在文档中,他们还说这种方法已被弃用,而我应该使用与 Fragments 等相关的东西。这可能是我没有调用该方法的原因吗?
实际上,我正在为 2.3.3 到 3.0设备实施,但我的测试设备是 4.0.4:这可能是问题吗?我认为 Android 操作系统版本之间存在某种向后兼容性。
提前致谢,