-
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 控制器):是您的「錢包」。您隨身帶著它,但它可能隨時會遺失、被…
-
Thread 和 Coroutine 的理解
2025-05-17參考文章 簡單來說,Thread (執行緒) 是由作業系統 (OS) 來管理和調度的,而 Coroutine (協程) 的控制權則在我們開發者手上,由程式語言的執行環境 (Runtime) 在使用者層…
-
id(“org.kotlin.xxxx”) version “2.1.0” apply false 這不要你還特地寫上去啊?.
2025-02-14假設我們的專案 MyPlayerApp 是一個音樂播放器,它有三個模組: app: 主應用程式模組,包含 UI 畫面。(需要 Compose) feature_playlist: 播放清單功能的模…
-
lateinit vs lazy
2024-07-21lateinit:var 給別人初始化的承諾 最適合用在生命週期或依賴注入,當你確定某個外部力量會幫你搞定初始化時: Kotlin lateinit var adapter: RecyclerView…