0

我有一个未本地化的应用程序,用户界面只会以一种语言显示。我想避免在更改设备的区域设置时重新启动应用程序。

我知道要自己处理配置更改,我可以在 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 的设备上重新启动?

提前致谢。

4

1 回答 1

0

为什么你有 targetSdkVersion="15" ?应该是 18 岁...特别是因为您计划支持 Android Jelly Bean 4.2.2

检查此链接

于 2013-10-11T13:16:36.530 回答