iT邦幫忙

鐵人檔案

2026 iThome 鐵人賽
回列表
Software Development

從 Fragment 到 Compose — 老 Android App 重寫的架構取捨 系列

一個維護了九年的 Android 外勤 App:Java 與 Kotlin 各半、一個一萬兩千行的 Activity、沒有 DI、沒有測試。這個系列記錄我用 Jetpack Compose 多模組架構把它重寫的 30 天:每天一個真實的架構決定,寫下選項、代價與理由,並附上去識別化的程式碼。主題涵蓋 DI、狀態管理、導航、藍牙硬體抽象、離線上傳佇列,以及可跨產品覆用的 core 模組設計。

參賽天數 25 天 | 共 25 篇文章 | 1 人訂閱 訂閱系列文 RSS系列文
DAY 21

Day 21|離線佇列:Room + WorkManager

動筆前先答(兩題) 1.【模擬面試追問|持久化與離線】 舊 App 送出「交接證明照片」的流程是這樣: 畫面把照片的 URI 清單放進 Intent,啟動一個...

2026-10-05 ‧ 由 Jim 分享
DAY 22

Day 22|上傳策略:重試、退避與進度

動筆前先答(兩題) 1.【決策邊界|網路與資料】 App 要把三種檔案送出去: 照片:一次 1~5 張,每張壓縮後約 300 KB。 錄影:最長三分鐘,檔案可...

2026-10-06 ‧ 由 Jim 分享
DAY 23

Day 23|端到端:拍照 → 佇列 → 上傳 → 進度

動筆前先答(兩題) 1.【模擬面試追問|規格與驗收】 文章寫到:使用者在交接畫面拍了三張照片,按「送出」。新 App 的流程是:壓縮 → 寫進佇列(Room)→...

2026-10-07 ‧ 由 Jim 分享
DAY 24

Day 24|13 個掃描 Activity 收成一個 ScannerScreen:ML Kit + CameraX

動筆前先答(兩題) 1.【預測再驗證|平台能力】 新的掃描畫面用 CameraX 的 ImageAnalysis 餵影格給 ML Kit 的條碼辨識,骨架大概是...

2026-10-08 ‧ 由 Jim 分享
DAY 25

Day 25|掃描結果怎麼回到呼叫端:SavedStateHandle 與共享 ViewModel 的取捨

動筆前先答(兩題) 1.【預測再驗證|UI 與版型】 昨天的 ScannerScreen 掃完要把 ScanResult 交回打開它的畫面。最常見的寫法是透過上...

2026-10-09 ‧ 由 Jim 分享