2013-10-11 108 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

相關問題