-
Jetpack Compose: 何時該用 derivedStateOf?
2025-07-17官方導讀 核心摘要 (一句話總結) derivedStateOf 是一個效能優化工具,它像一個智慧守門員,專門用來防止因「來源狀態」變化過於頻繁而導致的**「不必要的 UI 重組 (Recomposi…
-
Modifier 效能 Draw 啥比較好:drawBehind , drawWithContent
Compose 的自訂繪圖是效能殺手。每次畫面重組,你的繪圖邏輯就得重跑一次,FPS 隨時可能崩盤。 1. Modifier.drawBehind:背景板 它會先讓你畫圖,然後才把元件內容(文字、圖片…
-
kotlin init 前初始化屬性會發生啥事
Kotlin 的 class 內部,在初始化階段,是無情地由上到下執行的。 Kotlin // 下面這樣寫會發生啥事,不會發生啥事,因為編譯不過,所以不能跑 class ItemEditViewMod…
-
viewModelScope vs rememberCoroutineScope 其實沒啥好 versus ,就是 SOC 職責分離
2025-07-15簡單來說,它們的主要差異在於生命週期綁定的對象和使用的層級不同。 viewModelScope:與 ViewModel 的生命週期綁定,只能用在資料/邏輯層。 rememberCoroutineSco…
-
Compose 三階段渲染管線
2025-07-14核心三階段 (The Three Phases) Compose 將 UI 的生成與更新拆解為三個依序執行的獨立階段,以實現最大化的工作重用與性能優化。 組合 (Composition): 此階段的核…
-
Job 大大大不同 ,SupervisorJob 不就是 viewModelScope嗎?
Job 不僅僅是 launch 的回傳值,它是我們管理 Coroutine 生命週期和失敗策略的「遙控器」。 Job : Job 是最基本的協定,它遵循嚴格的「結構化併發」原則。你可以把它想像成一個緊…
-
Kotlin 如何預防 Launch 連發,搜尋任務
不管處理何種問題,我們都必須考慮是出於何種場景,就像是 使用者在 1 秒內點了 10 次。由於 launch 的天性是「射後不理 (fire-and-forget)」,你的 App 也會忠實地啟動 1…
-
CreationExtras.inventoryApplication() 這有點跳
CreationExtras 到底是什麼? CreationExtras 是一個在 ViewModel 創建時自動附帶的「額外資訊包裹」。 以前,想給 ViewModel 傳參數(如 SavedSta…
-
fun GameScreen(gameViewModel: GameViewModel = GameViewModel()) 這樣寫有啥問題?
直接 new GameViewModel() Kotlin class GameViewModel : ViewModel() { var score by mutableStateOf(0) ini…
-
inline, noinline, crossinline:存在即合理
老樣子,存在必合理,有這樣的 Keyword ,那肯定是前人有過不去的坎,所以才設計出這個要想一想的概念 問題:優雅的 Lambda,不堪重負的 GC Kotlin 的高階函數與 Lambda 是偉大…