onConfigurationChanged

更新於 發佈於 閱讀時間約 3 分鐘
轉移自 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
留言分享你的想法!
avatar-img
Kate的沙龍
6會員
45內容數
和 Kotlin 相關的系列文章。 給程式初學者的「Kotlin 學習系列」 給正在實戰的工程師「Kotlin 實戰系列」
Kate的沙龍的其他內容
2023/03/22
比起說這是新技術,不如說是統一前端規格。 以前在不同框架下,類似功能的東西名字各不相同。比如輸入文字的物件,Android叫做EditText,iOS叫做UITextField,Html叫做TextBox或是input標籤。 這讓跨平台的開發者非常痛苦,痛不欲生。 而統一規格意味著,只要專心寫一套程
2023/03/22
比起說這是新技術,不如說是統一前端規格。 以前在不同框架下,類似功能的東西名字各不相同。比如輸入文字的物件,Android叫做EditText,iOS叫做UITextField,Html叫做TextBox或是input標籤。 這讓跨平台的開發者非常痛苦,痛不欲生。 而統一規格意味著,只要專心寫一套程
2022/10/23
https://discord.gg/8GRF3YsG?event=1033340341711028224 今天(10/23)晚上七點: 《老姐要用 Kotlin 寫專案》作者分享如何把小說和技術文整合在一起。 連續三年都用Kotlin參加IT邦鐵人賽的心得分享。 關於書本、鐵人賽文章、任何遇到的K
2022/10/23
https://discord.gg/8GRF3YsG?event=1033340341711028224 今天(10/23)晚上七點: 《老姐要用 Kotlin 寫專案》作者分享如何把小說和技術文整合在一起。 連續三年都用Kotlin參加IT邦鐵人賽的心得分享。 關於書本、鐵人賽文章、任何遇到的K
2022/09/08
當初第一次參賽就得獎出書,就養成了每年都參加的習慣,今年是第三年了,這次寫的是《不解題就不能離開的房間》系列。 這還滿有趣的,三十天每天只要三百字,將自己的技術寫出來分享,就有機會出書。
2022/09/08
當初第一次參賽就得獎出書,就養成了每年都參加的習慣,今年是第三年了,這次寫的是《不解題就不能離開的房間》系列。 這還滿有趣的,三十天每天只要三百字,將自己的技術寫出來分享,就有機會出書。
看更多
你可能也想看
Thumbnail
大家好,我是一名眼科醫師,也是一位孩子的媽 身為眼科醫師的我,我知道視力發展對孩子來說有多關鍵。 每到開學季時,診間便充斥著許多憂心忡忡的家屬。近年來看診中,兒童提早近視、眼睛疲勞的案例明顯增加,除了3C使用過度,最常被忽略的,就是照明品質。 然而作為一位媽媽,孩子能在安全、舒適的環境
Thumbnail
大家好,我是一名眼科醫師,也是一位孩子的媽 身為眼科醫師的我,我知道視力發展對孩子來說有多關鍵。 每到開學季時,診間便充斥著許多憂心忡忡的家屬。近年來看診中,兒童提早近視、眼睛疲勞的案例明顯增加,除了3C使用過度,最常被忽略的,就是照明品質。 然而作為一位媽媽,孩子能在安全、舒適的環境
Thumbnail
我的「媽」呀! 母親節即將到來,vocus 邀請你寫下屬於你的「媽」故事——不管是紀錄爆笑的日常,或是一直想對她表達的感謝,又或者,是你這輩子最想聽她說出的一句話。 也歡迎你曬出合照,分享照片背後的點點滴滴 ♥️ 透過創作,將這份情感表達出來吧!🥹
Thumbnail
我的「媽」呀! 母親節即將到來,vocus 邀請你寫下屬於你的「媽」故事——不管是紀錄爆笑的日常,或是一直想對她表達的感謝,又或者,是你這輩子最想聽她說出的一句話。 也歡迎你曬出合照,分享照片背後的點點滴滴 ♥️ 透過創作,將這份情感表達出來吧!🥹
Thumbnail
本課程學習如何使用 Intent 簡單跳頁,切換兩個 Activity。
Thumbnail
本課程學習如何使用 Intent 簡單跳頁,切換兩個 Activity。
Thumbnail
本課程學習如何使用 Android Studio 建立的第一個應用程式專案:Hello World。
Thumbnail
本課程學習如何使用 Android Studio 建立的第一個應用程式專案:Hello World。
Thumbnail
根據初學者設計了 Kotlin 程式語言的基礎課程,從 Android Studio 到 Android App 開發,提供完整指引。由基礎開始,傳授開發技巧。課程分為三部分:環境安裝、常用元件與界面設計,以及高階技巧如 DataStore、Room 資料儲存與網路處理。
Thumbnail
根據初學者設計了 Kotlin 程式語言的基礎課程,從 Android Studio 到 Android App 開發,提供完整指引。由基礎開始,傳授開發技巧。課程分為三部分:環境安裝、常用元件與界面設計,以及高階技巧如 DataStore、Room 資料儲存與網路處理。
Thumbnail
如何實現在 App 內部就可直接切換語言,無需手機系統都要跟著切換語言的方法。
Thumbnail
如何實現在 App 內部就可直接切換語言,無需手機系統都要跟著切換語言的方法。
Thumbnail
身為一個菜鳥工程師,將辛苦製作的 App 推向國際,多國語言是肯定要的。 那要如何在 App 中設定變成可以支援多語系的專案呢? Localization 多國語系設定,讓我們繼續看下去...
Thumbnail
身為一個菜鳥工程師,將辛苦製作的 App 推向國際,多國語言是肯定要的。 那要如何在 App 中設定變成可以支援多語系的專案呢? Localization 多國語系設定,讓我們繼續看下去...
Thumbnail
設計時的考量主要有:(1) App 是 Internet App,在考量 UI 體驗和網路頻寬的消耗,多數資料需以某種形式儲存部分資料在行動裝置上;(2) 因此會需要同步伺服器端和行動裝置端之間資料狀態;(3) 但行動裝置網路的穩定性不如一般網路可靠,要有足夠的自動化測試驗證正常的流程與異常的流程。
Thumbnail
設計時的考量主要有:(1) App 是 Internet App,在考量 UI 體驗和網路頻寬的消耗,多數資料需以某種形式儲存部分資料在行動裝置上;(2) 因此會需要同步伺服器端和行動裝置端之間資料狀態;(3) 但行動裝置網路的穩定性不如一般網路可靠,要有足夠的自動化測試驗證正常的流程與異常的流程。
Thumbnail
在開發產品過程中,不難發現研發和設計團隊時常因各自所處的角度不同,使得在溝通來回上花了不少時間。所以小弟整理些過去常在工作場景下遇到的一些資訊技術的專有名詞,化解那些雞同鴨講的無效溝通。
Thumbnail
在開發產品過程中,不難發現研發和設計團隊時常因各自所處的角度不同,使得在溝通來回上花了不少時間。所以小弟整理些過去常在工作場景下遇到的一些資訊技術的專有名詞,化解那些雞同鴨講的無效溝通。
Thumbnail
這次錯誤在Android 11 發生 去年12月底 , 有客戶反應 , 在 android 11 的手機 , 公司 app 開不起來 或開起來跑很久 , 空白頁..........登入畫面空白 之類奇怪的問題 一開始用 Android studio 的模擬器試 , 沒問題 看來需要實機了 於是就開始
Thumbnail
這次錯誤在Android 11 發生 去年12月底 , 有客戶反應 , 在 android 11 的手機 , 公司 app 開不起來 或開起來跑很久 , 空白頁..........登入畫面空白 之類奇怪的問題 一開始用 Android studio 的模擬器試 , 沒問題 看來需要實機了 於是就開始
Thumbnail
轉移自 LogDown 原文日期 December 19, 2014 11:07  雖然 gradle 很好用,但有時候會出現一些我們無法輕易理解的訊息,像是找不到某個版本的 library 。ex: Could not find com.google.android.gms:play-servic
Thumbnail
轉移自 LogDown 原文日期 December 19, 2014 11:07  雖然 gradle 很好用,但有時候會出現一些我們無法輕易理解的訊息,像是找不到某個版本的 library 。ex: Could not find com.google.android.gms:play-servic
Thumbnail
轉移自 LogDown 原文日期 September 16, 2014 22:06   不知道有沒有人和筆者一樣已經習慣在 Androidmanifest.xml 裡為 android:configChanges 加上一大串的 flag ,而忘記它的意義。   Activity 是很敏感的,如果沒有
Thumbnail
轉移自 LogDown 原文日期 September 16, 2014 22:06   不知道有沒有人和筆者一樣已經習慣在 Androidmanifest.xml 裡為 android:configChanges 加上一大串的 flag ,而忘記它的意義。   Activity 是很敏感的,如果沒有
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News