-
Communicate with fragments
2025-07-21參考原文 請忘掉 getActivity() 或 findFragmentByTag()。 現代化的 Fragment 通訊,核心是「中介者模式」。你有兩種武器:ViewModel 和 Fragmen…
-
handle all repostiory operation that out of Composable/ViewModel scope
作法一:async + await(我要結果,但任務不能停) 這招的核心是「分離執行與等待的生命週期」。Repository 接受一個長壽的 externalScope,用 async 把任務丟進去獨…
-
DisposableEffect 與 LifecycleEventObserver
在 Jetpack Compose 中,通常會使用 DisposableEffect 來與 LifecycleEventObserver 互動,以便在 Composable 中安全地監聽 Androi…
-
lateinit vs lazy
lateinit:var 給別人初始化的承諾 最適合用在生命週期或依賴注入,當你確定某個外部力量會幫你搞定初始化時: Kotlin lateinit var adapter: RecyclerView…
-
Thread 和 Coroutine 的理解
2025-07-17參考文章 簡單來說,Thread (執行緒) 是由作業系統 (OS) 來管理和調度的,而 Coroutine (協程) 的控制權則在我們開發者手上,由程式語言的執行環境 (Runtime) 在使用者層…
-
Difference between constructors and init in kotlin
原文 核心問題:誰負責「定義」?誰負責「執行」? 在 Kotlin 中,Object 創建是個有順序的過程。constructor 和 init block 是關鍵成員,各自有明確職責。搞不清這點,可…
-
Jetpack Compose: 何時該用 derivedStateOf?
官方導讀 核心摘要 (一句話總結) 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…