我有一個未本地化的應用程序,用戶界面只會以一種語言顯示。我希望避免在設備的區域設置發生變化時重新啓動應用程序。如何在更改語言環境時防止應用程序重新啓動?
我知道處理的配置改變我自己,我可以設置「區域」財產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