2013-10-11 63 views
0

我有一个未本地化的应用程序,用户界面只会以一种语言显示。我希望避免在设备的区域设置发生变化时重新启动应用程序。如何在更改语言环境时防止应用程序重新启动?

我知道处理的配置改变我自己,我可以设置“区域”财产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的设备上重新启动?

在此先感谢。

回答

0

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

检查this link

+0

Android的键盘实现在targetSdkVersion> = 17时显着变化。此时我没有时间为键盘重新编码合适的解决方案,因此我的targetVersion需要保持<17。 – sarseyn

相关问题