AndroidX Navigation component for Jetpack Compose type safety

AndroidX Navigation component 是 Google 推出的 single Activity app navigation library。本身是用 Fragment 來做每一頁的內容,然後再用新的 Android resource type——navigation 來定義 navigation graph(即是...

August 18, 2024

Firebase Cloud Messaging legacy API

如果有用 Firebase Cloud Messaging (FCM) 或者其他關於 FCM 的第三方 SDK 的話應該會收到通知說 6 月 21 日會停用舊版的 FCM API(即是供 server 發送 notification 那個 API endpoint)。之後就要轉...

June 1, 2024

Android WebView 筆記

好幾年都沒有特別去用 Android 的 WebView,近期工作需要用到 WebView,所以特別去查一下並將資料放在這篇文章內方便日後翻查。 AndroidX WebKit AndroidX 其實有 WebKit 的...

February 24, 2024

Android 14 migration

最近把 MetroRide 的 API level 升到 34 (Android 14),中間發現了一些問題,在這裏記錄一下。 Foreground service MetroRide 有用到 AndroidX WorkManager 來下載離線資料並放到 SQLite database 內,而且開了 foreground service。在 Android...

February 2, 2024

Android pseudolocale

在處理 app UI 多國語言時,我們不時要留意是不是預留了足夠空間來顯示文字。一般而言,中文內容通常都比其他語言短,你的 UI 可能看起來沒有問題,但換到其...

July 14, 2023

Android 13 Per-app Language Preferences

最近抽點時間把 MetroRide 參照 Now in Android 示範項目更新一下,例如改用 TOML 版的 version catalog(之前是用 Kotlin DSL)、轉用 includeBuild 加 convention plugin 取代之前把 plugin 放在 buildSrc 內、更新 dependency 版本...

January 25, 2023

Jetpack Compose Navigation component sub-graph

這次遷移到 Compose 時特別花了時間試用 Compose 的 Navigation component,終於弄清 nested graph 的意義。其實 Compose 的 Navigation component 底層都是跟 XML 版的 Navigation component 一樣,只是底層多了以 route 形式的處理...

July 27, 2022

Jetpack Compose 遷移 (2)

上一篇提過如何將 MetroRide 由傳統 view system 遷移到 Jetpack Compose。但一篇又太長,所以分拆成兩篇。 Dependency injection 按照官方的建議,composable function 要用到的 dependency 應該由...

July 26, 2022

Jetpack Compose 遷移 (1)

近幾個月斷斷續續替 MetroRide 的界面由傳統 view system(即是 layout XML)轉為 Jetpack Compose,順帶補上去年參加 iThome 鐵人賽時用來做示範的重鐵抵站時間功能。...

July 24, 2022

AndroidX Room Relational Query Method

最近為 MetroRide 做新功能,剛好有個地方可以用到 Room 2.4 的新功能:Relational Query Method。這個功能可以把平常 table 之間的 relationship 用 Map 一次過 return 出來,不用像...

January 29, 2022