onConfigurationChanged与OnCreate,究竟谁被调用的问题

时间:2023-03-09 05:46:27
onConfigurationChanged与OnCreate,究竟谁被调用的问题

在以前的版本中只要在AndroidManifest.xml文件中对activity指定android:configChanges="keyboardHidden|orientation"属性,转屏的时候就会不再重新调用OnCreate()函数,而是调用onConfigurationChanged()。

但是在自从android3.2以后,再这样设置的话,会发现转屏后仍然会调用OnCreate(),而不是onConfigurationChanged();原因是google在android3.2中添加了screensize改变的通知,在转屏的时候,不仅是orientation发生了改变,screensize同样也发生了改变。

因此可以使用如下方法实现调用onConfigurationChanged()方法,不调用OnCreate()函数:

1.指定android:configChanges="keyboardHidden|orientation|screenSize",其他的代码和以前的代码一样处理;

2.在AndroidManifest.xml中指定targetSdkVersion为3.2以前的版本(3.2的版本号为13),系统会自动加上screenSize属性值。

比如:<uses-sdk android:minSdkVersion="3" android:targetSdkVersion="12" />

建议使用第一种方法。