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
「欸!這是在哪裡買的?求連結 🥺」 誰叫你太有品味,一發就讓大家跟著剁手手? 讓你回購再回購的生活好物,是時候該介紹出場了吧! 「開箱你的美好生活」現正召喚各路好物的開箱使者 🤩
Thumbnail
「欸!這是在哪裡買的?求連結 🥺」 誰叫你太有品味,一發就讓大家跟著剁手手? 讓你回購再回購的生活好物,是時候該介紹出場了吧! 「開箱你的美好生活」現正召喚各路好物的開箱使者 🤩
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
在開發產品過程中,不難發現研發和設計團隊時常因各自所處的角度不同,使得在溝通來回上花了不少時間。所以小弟整理些過去常在工作場景下遇到的一些資訊技術的專有名詞,化解那些雞同鴨講的無效溝通。
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News