如何在更改区域设置时阻止应用重启?

时间:2013-10-11 13:07:42

标签: android locale

我有一个未本地化的应用程序,UI只会以一种语言显示。我想避免在设备的语言环境发生变化时重启应用程序。

我知道要自己处理配置更改,我可以在configChanges中设置' locale '属性:

android:configChanges="orientation|keyboardHidden|screenSize|locale"

此外,我的应用程序还有以下min和target sdk版本:

<uses-sdk android:minSdkVersion="9" android:targetSdkVersion="15"/>

我怀疑在android:configChanges中仅使用'locale'仅适用于使用SDK的设备&lt; 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&gt; = 17?

的设备上重新启动

提前致谢。

1 个答案:

答案 0 :(得分:0)

为什么你有targetSdkVersion =“15”?应该是18 ...尤其是因为你计划支持Android Jelly Bean 4.2.2

检查this link