-
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 是偉大…
-
麻煩 ViewModelProvider.Factory 你了,因為系統不讓我直接 new 一個 ViewModel
這個規範是為了解決 Android 元件生命週期不一致所帶來的大問題。 ## 生活比喻:政府管理的保管箱 開發者 Activity/Fragment (UI 控制器):是您的「錢包」。您隨身帶著它,但…
-
id(“org.kotlin.xxxx”) version “2.1.0” apply false 這不要你還特地寫上去啊?.
好的,我們直接來看一個實際的 Android 專案,看看 apply false 在真實世界中是如何運作的。 假設我們的專案 MyPlayerApp 是一個音樂播放器,它有三個模組: app: 主應用…
-
Android 爛裝置想跑人臉辨識- GC 是唯一會關心你OOM 的好人
2025-06-10每個在 Android 裝置上跑高負載應用的人,都跟 OOM(Out Of Memory)這位惡名昭彰的兄弟打過交道。不如說我根本每天照三餐處理這問題,從我第一年工作開始… 尤其當你現在的…
-
Android 爛裝置想跑人臉辨識4-記憶體控場師LMKD
2025-05-19《殺的不是 Process,是我的幹話時間》
【你以為關掉幾個沒用的 system service 就解決了?】
別天真了,Android 本來就有一套「快爆了我來殺人」的內建機制,名為:
Low-Memory Killer Daemon