Android切換語言程序閃退,需要避免Activity重啓

搜索了一下相關的資料,http://blog.sina.com.cn/s/blog_629712650101a1o3.html 說是因爲4.2中,app配置了configChanges locale屬性後,當app處於後臺,並沒有finish時,如果改變語言,並不會在resume時調用Activity重寫的onConfigurationChanged函數。

原因是,4.2增加了一個layoutDirection屬性,當改變語言設置後,該屬性也會成newConfig中的一個mask位。所以ActivityManagerService(實際在ActivityStack)在決定是否重啓Activity的時候總是判斷爲重啓。

當在android:configChanges 中同時添加locale和layoutDirection時,纔會發生app期望的事情。

所以解決方法是,在manifest.xml的每個activity中添加:

android:configChanges="locale|layoutDirection"

我是添加上面這句代碼就解決了。

別人的解決方法:

切換語言後避免Activity重啓的解決辦法就是下面:

android:configChanges="locale|layoutDirection|keyboard" //缺一不可,多是可以的

 

我的代碼裏原本就有keyboard這個標籤,所以我不確定是否需要添加,不過添加也無害。

記錄一下。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章