android:configChanges="locale"

android:configChanges="locale" html

以後在不退出應用的狀況下切換到Settings裏切換語言,發現該Activity仍是重啓了。android

4.2中,app配置了configChanges locale屬性後,當app處於後臺,並無finish時,若是改變語言,並不會在resume時調用Activity重寫的onConfigurationChanged函數。app

緣由是,4.2增長了一個layoutDirection屬性,當改變語言設置後,該屬性也會成newConfig中的一個mask位。因此ActivityManagerService(實際在ActivityStack)在決定是否重啓Activity的時候老是判斷爲重啓。
當在 android:configChanges 中同時添加locale和layoutDirection時,纔會發生app指望的事情。
SDK文檔中有:
"orientation" The screen orientation has changed — the user has rotated the device.

Note: If your application targets API level 13 or higher (as declared by the minSdkVersion and targetSdkVersion attributes), then you should also declare the "screenSize" configuration, because it also changes when a device switches between portrait and landscape orientations.ide

可是在locale中卻沒有說明。locale中應該也有和這個相似的說明。
相關文章
相關標籤/搜索