onConfigurationChanged

更新於 發佈於 閱讀時間約 2 分鐘
轉移自 LogDown 原文日期 September 16, 2014 22:06
不知道有沒有人和筆者一樣已經習慣在 Androidmanifest.xml 裡為 android:configChanges 加上一大串的 flag ,而忘記它的意義。
Activity 是很敏感的,如果沒有在 android:configChanges 裡給予任何值,那麼它很容易因為一些變化 destory ,然後 onCreate ,比如說:切換屏幕方向、改變語系;相反的,如果變化 包含於 你賦予的值,將會改呼叫 Activity 裡的 onConfigurationChanged 。
請注意,這裡說的是 包含於 ,也就是說一旦超出這個範圍,它就會 destory ,然後 onCreate 。
會在此強調,自然就是因為筆者曾經掉進這個坑。
有經驗的 Android 開發者都會對下面這行眼熟。
AndroidManifest.xml <activity ...... android:configChanges="orientation|keyboardHidden|screenSize" />
沒錯,切換屏幕方向時, Android 會改變的不只是 orientation ,還有 keyboardHidden 。
至於 screenSize ,則是 SDK 13 新增加的。
如果只有上面,網路上早有範例,筆者是不會特別提出來的,會特別寫這篇文章,是因為筆者最近在開發「切換 APP 語系(系統語系保持不變)」;這個項目並不是很少見,所以能夠參考一些前輩的經驗,但不幸的是,套用上去卻造成不停 destroy 的窘境。
在經過一番折騰之後,筆者終於想到問題可能肇因於新的 SDK ,於是改成了下面這個樣子。
AndroidManifest.xml <activity ...... android:configChanges="orientation|keyboardHidden|screenSize|locale|layoutDirection" />
在之前的舊版本,只需要 locale 而已; layoutDirection 是 SDK 17 新增加的部分,語系的變換會影響到閱讀方向( LTR, RTL )。想知道更詳細的,直接到官方網頁吧。
雖然說 Android 官方的確是越來越細心了,但是這樣一來, SDK 每更新一版,開發者們都得特別留意,是不是又有新屬性了⋯⋯。
avatar-img
6會員
45內容數
和 Kotlin 相關的系列文章。 給程式初學者的「Kotlin 學習系列」 給正在實戰的工程師「Kotlin 實戰系列」
留言0
查看全部
avatar-img
發表第一個留言支持創作者!
Kate的沙龍 的其他內容
轉移自 LogDown 原文日期  July 30, 2014 19:36  Gogo Monkey Run Kevin, Gogolook monkey runner     - auto-testing tool     - python monkey recorder     - co
 轉移自 LogDown 原文日期 June 04, 2014 17:47  最近才發現,開了部落格但卻好安靜的原因是:留言系統要另外裝啊!(翻桌 官方推薦的是disqus,要先註冊。 可以用社交帳號這點是方便許多,但總覺得這樣好像在賣身(份)。 不過它拿的只是你的名字和信箱,密碼還是要另外設
轉移自 LogDown 原文日期 May 30, 2014 14:10,現今 Parse 官方 server 已關閉,僅提供 SDK 自架 Server   Parse 官網: https://parse.com/ 一般使用的是它的推播功能,這在之前已經提過,這次要介紹的是雲端資料服務。 設置相
轉移自 LogDown 原文日期 May 30, 2014 10:14  之前介紹過用 Parse 來做 push,這次換成另一家服務廠商。 Lightspeed 官網: http://www.lightspeedmbs.com/。 它是由 arrownock 延伸而來的,專職於推播和即時訊息
轉移自 LogDown 原文日期 May 29, 2014 13:34,現今 Parse 官方 server 已關閉,僅提供 SDK 自架 Server  Parse 官網: https://parse.com/ 它提供的不只有推播訊息,還有其他功能,例如雲端資料建置,這會在下次介紹。 SDK 和官
轉移自 LogDown 原文日期 May 27, 2014 16:02 平時就有做筆記的習慣,再加上朋友的提議,所以決定開一個部落格來放筆記、開發心得和一些雜言。 選擇 LogDown 的理由無它,聞其在程式碼編排方面的良好支援。 首篇先來研究 LogDown : 會員制度有二,付費和免費。 新會員
轉移自 LogDown 原文日期  July 30, 2014 19:36  Gogo Monkey Run Kevin, Gogolook monkey runner     - auto-testing tool     - python monkey recorder     - co
 轉移自 LogDown 原文日期 June 04, 2014 17:47  最近才發現,開了部落格但卻好安靜的原因是:留言系統要另外裝啊!(翻桌 官方推薦的是disqus,要先註冊。 可以用社交帳號這點是方便許多,但總覺得這樣好像在賣身(份)。 不過它拿的只是你的名字和信箱,密碼還是要另外設
轉移自 LogDown 原文日期 May 30, 2014 14:10,現今 Parse 官方 server 已關閉,僅提供 SDK 自架 Server   Parse 官網: https://parse.com/ 一般使用的是它的推播功能,這在之前已經提過,這次要介紹的是雲端資料服務。 設置相
轉移自 LogDown 原文日期 May 30, 2014 10:14  之前介紹過用 Parse 來做 push,這次換成另一家服務廠商。 Lightspeed 官網: http://www.lightspeedmbs.com/。 它是由 arrownock 延伸而來的,專職於推播和即時訊息
轉移自 LogDown 原文日期 May 29, 2014 13:34,現今 Parse 官方 server 已關閉,僅提供 SDK 自架 Server  Parse 官網: https://parse.com/ 它提供的不只有推播訊息,還有其他功能,例如雲端資料建置,這會在下次介紹。 SDK 和官
轉移自 LogDown 原文日期 May 27, 2014 16:02 平時就有做筆記的習慣,再加上朋友的提議,所以決定開一個部落格來放筆記、開發心得和一些雜言。 選擇 LogDown 的理由無它,聞其在程式碼編排方面的良好支援。 首篇先來研究 LogDown : 會員制度有二,付費和免費。 新會員
你可能也想看
Google News 追蹤
Thumbnail
嘿,大家新年快樂~ 新年大家都在做什麼呢? 跨年夜的我趕工製作某個外包設計案,在工作告一段落時趕上倒數。 然後和兩個小孩過了一個忙亂的元旦。在深夜時刻,看到朋友傳來的解籤網站,興致勃勃熬夜體驗了一下,覺得非常好玩,或許有人玩過了,但還是想寫上來分享紀錄一下~
Thumbnail
Anytype設定與查看小技巧 : 如何設定中文界面、如何再次查看助記詞、如何在手機上登錄Anytype
Thumbnail
筆者習慣當手機出現以下三個症狀時,換換病就會發作,但不見得是換新手機或是高階手機,全然憑當時的心情去做更換。 手機來電時不會響 (Apple),連手機最基本的通話功能都不具備了,怎麼能不換呢? 通訊軟體不會響(Android),這點倒是不分品牌都會發生,但這鍋應該是軟體要背才對,又肥又重的軟體才
Thumbnail
本課程學習如何處理按鈕點擊事件並透過 Logcat 日誌輸出資訊確認按鈕邏輯是否正確。
Thumbnail
本課程學習如何修改按鈕外觀的方法,透過調整背景屬性和形狀。我們新增了四種背景顏色,修改每個按鈕的外觀。完成後,呈現不同按鈕風格。
Thumbnail
本課程學習如何提取共同屬性,透過 Style 樣式包,套用至每個按鈕。來提升佈局的可讀性和好維護性。
本課程將學習如何在 Activity 中註冊監聽 Fragment 點擊事件。
本課程學習將學習如何在 Fragment 中使用 ViewBinding 來取代 findViewById 避免記憶體洩漏和空指針異常問題。
本課程學習如何將 Activity 傳遞參數給 Fragment。
本課程學習如何使用 RecyclerView 資料列表監聽點擊事件。
Thumbnail
嘿,大家新年快樂~ 新年大家都在做什麼呢? 跨年夜的我趕工製作某個外包設計案,在工作告一段落時趕上倒數。 然後和兩個小孩過了一個忙亂的元旦。在深夜時刻,看到朋友傳來的解籤網站,興致勃勃熬夜體驗了一下,覺得非常好玩,或許有人玩過了,但還是想寫上來分享紀錄一下~
Thumbnail
Anytype設定與查看小技巧 : 如何設定中文界面、如何再次查看助記詞、如何在手機上登錄Anytype
Thumbnail
筆者習慣當手機出現以下三個症狀時,換換病就會發作,但不見得是換新手機或是高階手機,全然憑當時的心情去做更換。 手機來電時不會響 (Apple),連手機最基本的通話功能都不具備了,怎麼能不換呢? 通訊軟體不會響(Android),這點倒是不分品牌都會發生,但這鍋應該是軟體要背才對,又肥又重的軟體才
Thumbnail
本課程學習如何處理按鈕點擊事件並透過 Logcat 日誌輸出資訊確認按鈕邏輯是否正確。
Thumbnail
本課程學習如何修改按鈕外觀的方法,透過調整背景屬性和形狀。我們新增了四種背景顏色,修改每個按鈕的外觀。完成後,呈現不同按鈕風格。
Thumbnail
本課程學習如何提取共同屬性,透過 Style 樣式包,套用至每個按鈕。來提升佈局的可讀性和好維護性。
本課程將學習如何在 Activity 中註冊監聽 Fragment 點擊事件。
本課程學習將學習如何在 Fragment 中使用 ViewBinding 來取代 findViewById 避免記憶體洩漏和空指針異常問題。
本課程學習如何將 Activity 傳遞參數給 Fragment。
本課程學習如何使用 RecyclerView 資料列表監聽點擊事件。