-
Difference between constructors and init in kotlin
2025-07-17原文 誰負責「定義」?誰負責「執行」? 在 Kotlin 中,Object 創建是個有順序的過程。constructor 和 init block 是關鍵成員,各自有明確職責。搞不清這點,可能導致初始…
-
Jetpack Compose: 何時該用 derivedStateOf?
官方導讀 derivedStateOf 是一個效能優化工具,專門用來防止因「來源狀態」變化過於頻繁而導致的**「不必要的 UI 重組 (Recomposition)」。。 1. 衍生 一個常見的範例開…
-
viewModelScope vs rememberCoroutineScope 其實沒啥好 versus ,就是 SOC 職責分離
2025-07-15viewModelScope:與 ViewModel 的生命週期綁定,只能用在資料/邏輯層。 rememberCoroutineScope:與 Composable 畫面元件的生命週期綁定,只能用在 …
-
SupervisorJob 不就是 viewModelScope嗎?
2025-07-14Job 不僅僅是 launch 的回傳值,它是我們管理 Coroutine 的「遙控器」。 Job : Job 是最基本的協定,它遵循嚴格的「結構化併發」原則。 特性:「一損俱損」。 在一個由標準 J…
-
fun GameScreen(gameViewModel: GameViewModel = GameViewModel()) 這樣寫有啥問題?
直接 new GameViewModel() Kotlin class GameViewModel : ViewModel() { var score by mutableStateOf(0) ini…
-
麻煩 ViewModelProvider.Factory 你了,因為系統不讓我直接 new 一個 ViewModel
這個規範是為了解決 Android 元件生命週期不一致所帶來的大問題。 ## 保險箱 開發者 Activity/Fragment (UI 控制器):是您的「錢包」。您隨身帶著它,但它可能隨時會遺失、被…
-
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
-
Thread 和 Coroutine 的理解
2025-05-17參考文章 簡單來說,Thread (執行緒) 是由作業系統 (OS) 來管理和調度的,而 Coroutine (協程) 的控制權則在我們開發者手上,由程式語言的執行環境 (Runtime) 在使用者層…
-
Android 爛裝置想跑人臉辨識1-評估第一
2025-05-08還沒評估,別談優化
我們不是在做手機 App,不需要切 app、滑畫面、體驗順順的。 我們做的是一台人臉辨識機,開機就跑模型,模型就要活。
而你手上是一台 2GB RAM 的 Android 10 裝置,系統一開機就吃掉 1.3GB,剩下不到 700MB 能用。 你放個雙鏡頭 stream、TFLite 模型、再加活體檢測,鐵定爆炸。 但爆不爆,不是看心情,是看數據。
