【发布时间】:2013-10-11 13:07:42
【问题描述】:
我有一个未本地化的应用程序,用户界面只会以一种语言显示。我想避免在更改设备的区域设置时重新启动应用程序。
我知道要自己处理配置更改,我可以在 configChanges 中设置“locale”属性:
android:configChanges="orientation|keyboardHidden|screenSize|locale"
此外,我的应用具有以下最低和目标 sdk 版本:
<uses-sdk android:minSdkVersion="9" android:targetSdkVersion="15"/>
我怀疑在 android:configChanges 中仅使用“区域设置”仅适用于使用 SDK
我已在装有 Android 2.3.5 的设备上使用上述配置测试了我的应用。 应用没有重新启动(如预期的那样!)。
但是,在装有 Android 4.2.2 的设备上,即使我指定了区域设置,应用也会重新启动。为了测试重启是否是由于配置更改,我添加了以下函数:
@Override
public Object onRetainNonConfigurationInstance()
{
Log.d(LOG_TAG, "onRetainNonConfigurationInstance");
return null;
}
在我看到的 logcat 输出中:
10-11 08:53:28.838: D/myapp(10282): onRetainNonConfigurationInstance
由于我的目标 API 设置为 15,我无法将“layoutDirection”添加到我的 android:configChanges。有没有其他方法可以防止我的应用在使用 sdk >= 17 的设备上重新启动?
提前致谢。
【问题讨论】: