-
@Immutable @Stable 如果 immutableList 內包含 list .這樣會造成 recompstion 嗎?
2025-08-05會.結束 1. List 會造成嚴重的重組問題嗎?在哪種情況? 答案是:會,而且絕對比你想像的更嚴重。 kotlin.collections.List 在 Compose 的世界中被視為「不穩定 (U…
-
Hilt 指南 組內分享
2025-07-26市場上已經很多依賴注入套件(dagger , koin)的選擇 ,還有很多文章介紹了,我會選擇 hilt 很單純,就是對於各類 mvvm 的物件,有魔法般的支援,真的少非常多代碼,選擇hilt 並非絕…
-
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:背景板 它會先讓你畫圖,然後才把元件內容(文字、圖片…