【问题标题】:How to prevent app restart when changing locale?更改区域设置时如何防止应用重新启动?
【发布时间】: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 的设备上重新启动?

提前致谢。

【问题讨论】:

    标签: android locale


    【解决方案1】:

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

    检查this link

    【讨论】:

    • android 键盘实现在 targetSdkVersion >= 17 时发生了显着变化。此时我没有时间为键盘重新编写适当的解决方案,因此我的 targetVersion 需要保持
    猜你喜欢
    • 1970-01-01
    • 2012-09-09
    • 2010-10-11
    • 2023-04-02
    • 2017-01-19
    • 2013-05-08
    • 2011-10-26
    • 2021-12-12
    • 2019-03-10
    相关资源
    最近更新 更多