-
viewModelScope vs rememberCoroutineScope 其實沒啥好 versus ,就是 SOC 職責分離
2025-07-15viewModelScope:與 ViewModel 的生命週期綁定,只能用在資料/邏輯層。 rememberCoroutineScope:與 Composable 畫面元件的生命週期綁定,只能用在 …
-
Compose 三階段渲染管線
2025-07-14核心三階段 Compose 將 UI 的生成與更新拆解為三個依序執行的獨立階段,以實現最大化的工作重用與性能優化。 組合 (Composition): 此階段的核心任務是執行 @Composable…
-
SupervisorJob 不就是 viewModelScope嗎?
Job 不僅僅是 launch 的回傳值,它是我們管理 Coroutine 的「遙控器」。 Job : Job 是最基本的協定,它遵循嚴格的「結構化併發」原則。 特性:「一損俱損」。 在一個由標準 J…
-
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 是偉大…
-
麻煩 ViewModelProvider.Factory 你了,因為系統不讓我直接 new 一個 ViewModel
這個規範是為了解決 Android 元件生命週期不一致所帶來的大問題。 ## 保險箱 開發者 Activity/Fragment (UI 控制器):是您的「錢包」。您隨身帶著它,但它可能隨時會遺失、被…
-
id(“org.kotlin.xxxx”) version “2.1.0” apply false 這不要你還特地寫上去啊?.
假設我們的專案 MyPlayerApp 是一個音樂播放器,它有三個模組: app: 主應用程式模組,包含 UI 畫面。(需要 Compose) feature_playlist: 播放清單功能的模…