我有一个未本地化的应用程序,用户界面只会以一种语言显示。我希望避免在设备的区域设置发生变化时重新启动应用程序。如何在更改语言环境时防止应用程序重新启动?
我知道处理的配置改变我自己,我可以设置“区域”财产configChanges:
android:configChanges="orientation|keyboardHidden|screenSize|locale"
另外,我的应用程序有以下分钟和目标SDK版本:
<uses-sdk android:minSdkVersion="9" android:targetSdkVersion="15"/>
我怀疑在android:configChanges中只使用'locale'只能在使用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的设备上重新启动?
在此先感谢。
Android的键盘实现在targetSdkVersion> = 17时显着变化。此时我没有时间为键盘重新编码合适的解决方案,因此我的targetVersion需要保持<17。 – sarseyn