我有一个未本地化的应用程序,用户界面只会以一种语言显示。我想避免在更改设备的区域设置时重新启动应用程序。
我知道要自己处理配置更改,我可以在 configChanges中设置“语言环境”属性:
android:configChanges="orientation|keyboardHidden|screenSize|locale"
此外,我的应用程序具有以下最小和目标 sdk 版本:
<uses-sdk android:minSdkVersion="9" android:targetSdkVersion="15"/>
我怀疑在 android:configChanges 中仅使用“语言环境”仅适用于使用 SDK < 17 的设备(详情如下)。
我已经在装有 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 的设备上重新启动?
提前致谢。