곡λΆν κ²
μ½λ£¨ν΄
μκ²λ κ²
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 |