곡λΆν κ²
μ½λ£¨ν΄
μκ²λ κ²
1. μ½λ£¨ν΄
μ΄μ μ μ΄μ΄ μ½λ£¨ν΄
μ λν΄ νμ΅νλ€. μ½λ£¨ν΄μ μ½λ£¨ν΄ μ€μ½ν
λ₯Ό ν΅ν΄μ μ€νν μ μλ€. μ½λ£¨ν΄ μ€μ½ν
λ₯Ό μ¬μ©νμ§ μκ³ λ μ½λ£¨ν΄μ μ€νν μ μμ§λ§ μ΄λ° κ²½μ°μ μμ
μ΄ μ’
λ£λ μ½λ£¨ν΄μ λν΄ λ³λμ μ²λ¦¬λ₯Ό ν΄μ€μΌ νλ€.
Coroutine Scope
Coroutine Scope
λ μ½λ£¨ν΄μ λ²μλ₯Ό μ μνλ μΈν°νμ΄μ€
μ΄λ€. λ§ κ·Έλλ‘ μ½λ£¨ν΄μ΄ μ€νλλ λ²μλ₯Ό μ§μ νλ€. λͺ¨λ μ½λ£¨ν΄μ Scope
λ΄μμ μ€νλμ΄μΌ νκ³ μ‘ν°λΉν°
λ νλκ·Έλ¨ΌνΈ
μ μλͺ
μ£ΌκΈ°
μ λ°λΌ μ½λ£¨ν΄
μ μ·¨μ
νμ¬ λ©λͺ¨λ¦¬ λ¦
μ λ°©μ§νλ€. Global Scope
μ Coroutine Scope
κ° μ‘΄μ¬νλ€.
1. Global Scope : μ±μ μλͺ
μ£ΌκΈ°μ ν¨κ» λμνκΈ°μ λ³λμ μλͺ
μ£ΌκΈ° κ΄λ¦¬κ° νμ μλ€. μ±μ΄ μ€νλκ³ μ’
λ£λκΈ°
κΉμ§ κΈ΄ μκ° μ€νλλ μ½λ£¨ν΄μ μ ν©
2. Coroutine Scope : μ½λ£¨ν΄μ΄ νμν λ μ€ννκ³ μ’
λ£νκΈ° μν μ€μ½ν, νΉμ μ΄λ²€νΈμ μλ²μ ν΅μ ν λ μ ν©
Coroutine Scope μ κ²½μ° Dispatcherλ₯Ό ν΅ν΄ μ½λ£¨ν΄μ΄ μ€νλ μ°λ λλ₯Ό μ§μ ν μ μλ€.
Coroutine Dispatcher
μ½λ£¨ν΄μ Dispatcher
λ₯Ό ν΅ν΄ μ°λ λν
λ΄μ μ μ ν μ°λ λ
μ μ½λ£¨ν΄μ λ°°λΆνλ€.
1. Dispatchers.Default : λ³λμ Contextλ₯Ό μ§μ νμ§ μμ κ²½μ° ν΄λΉ λμ€ν¨μ³λ‘ μλμΌλ‘ μ€μ λλ©° CPUλ₯Ό λ§μ΄ μ¬μ©νλ μμ μ μ§νν λ μ ν©
2. Dispatchers.IO : λμ€ν¬ λλ λ€νΈμν¬μ I/O μμ μ μ€νν λ μ ν©
3. Dispatchers.Unconfined : μ€λ¨λ μ°λ λμμ λ€μ μμνλ λμ€ν¨μ³λ‘ μ¬μ©νμ§ μλ κ²μ μΆμ²
4. Dispatchers.Main : λ°±κ·ΈλΌμ΄λ μ°λ λμμ μ½λ£¨ν΄μ μ€ννλ λμ€ν¨μ³λ‘ UIμ μνΈμμ©νλ μμ μ μ€νν λ μ ν©
Coroutine Builder
Coroutine Builder
λ Coroutine Scope
μ νμ₯ ν¨μ
λ‘ μλ‘μ΄ μ½λ£¨ν΄μ μ€ννκΈ° μν΄ μ¬μ©νλ€.
1. launch : νμ¬ μ€λ λλ₯Ό Block
νμ§ μκ³ μλ‘μ΄ μ½λ£¨ν΄μ μ€ννλ€. Job
μΈμ€ν΄μ€λ₯Ό λ°ννλ€.
2. Async : νμ¬ μ€λ λλ₯Ό Block
νμ§ μκ³ μλ‘μ΄ μ½λ£¨ν΄μ μ€ννλ€. Deferred<T>
μΈμ€ν΄μ€λ₯Ό λ°ννκ³ await
λ‘ κ°μ μ»λλ€.
3. runBlocking : μμ
μ΄ λλ λκΉμ§ νμ¬ μ°λ λλ₯Ό Block
νλ€. T νμ
μ κ²°κ³Όλ₯Ό λ°ννλ€.
곡λΆν κ²
MVVM
λλ μ
νμ΅ν μ½λ£¨ν΄μ μ€μ λ‘ μ μ©ν΄λ³΄μ
'π» κ°λ° > iOS' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[TIL] 22.04.18 (0) | 2022.04.18 |
---|---|
[TIL] 22.04.17 (0) | 2022.04.17 |
[TIL] 22.03.22 (0) | 2022.03.22 |
[TIL] 22.03.20 (0) | 2022.03.20 |
[TIL] 22.03.19 (0) | 2022.03.19 |