LiveData
Lifecycle-aware component
LiveData λ
LiveDataλ κ΄μ°° κ°λ₯ν λ°μ΄ν° νλ ν΄λμ€μ΄λ€. κ΄μ°° κ°λ₯ν μΌλ° ν΄λμ€μ λ¬λ¦¬ LiveDataλ μλͺ μ£ΌκΈ°λ₯Ό μΈμνλ€. μ‘ν°λΉν°, νλκ·Έλ¨ΌνΈ, μλΉμ€ λ± μ± κ΅¬μ±μμμ μλͺ μ£ΌκΈ°λ₯Ό κ³ λ €νλ€. μλͺ μ£ΌκΈ° μΈμμ ν΅ν΄ LiveDataλ νλ μλͺ μ£ΌκΈ° μνμ μλ μ± κ΅¬μ±μμ κ΄μ°°μλ§ μ λ°μ΄νΈ νλ€.
Observer
ν΄λμ€λ‘ ννλλ κ΄μ°°μμ μλͺ
μ£ΌκΈ°κ° STARTED
| RESUME
μνμ΄λ©΄ LiveDataλ κ΄μ°°μλ₯Ό νμ±μνλ‘ κ°μ£Όνλ€. LiveDataλ κ΄μ°°μμκ²λ§ μ
λ°μ΄νΈ μ 보λ₯Ό μλ¦°λ€.
LifecycleOwner
μΈν°νμ΄μ€λ₯Ό ꡬννλ κ°μ²΄μ νμ΄λ§λ κ΄μ°°μλ₯Ό λ±λ‘ν μ μλ€. μ΄ κ΄κ³λ₯Ό μ¬μ©νλ©΄ κ΄μ°°μμ λμλλ Lifecycle
κ°μ²΄μ μνκ° DESTROYED
λ‘ λ³κ²½λ λ κ΄μ°°μλ₯Ό μμ ν μ μλ€. LiveData κ°μ²΄λ μ‘ν°λΉν°λ νλκ·Έλ¨ΌνΈμμ νΉν μ μ©νκ² μ¬μ©κ°λ₯νλ©°, κ°μ²΄λ₯Ό μμ νκ² κ΄μ°°ν μ μκ³ μλͺ
μ£ΌκΈ°κ° λλλ μ¦μ μμ κ±°λΆκ° λμ΄λ©λͺ¨λ¦¬ λμλ₯Ό κ±±μ νμ§ μμλ λλ€.
LiveData μ¬μ©μ λν μ΄μ μ λ€μκ³Ό κ°λ€.
UI μ λ°μ΄ν° μνμ μΌμΉ 보μ₯ - LiveDataλ μ΅μ λ² ν¨ν΄μ λ°λ₯΄λ©°, κΈ°λ³Έ λ°μ΄ν°κ° λ³κ²½λ λ Observer κ°μ²΄μ μλ¦°λ€. Observerκ°μ²΄μ UIλ₯Ό μ λ°μ΄νΈ ν μ μμΌλ©° μ΄λ κ² νλ©΄ μ± λ°μ΄ν°κ° λ³κ²½λ λ λ§λ€ κ΄μ°°μκ° λμ UIλ₯Ό μ λ°μ΄νΈ νλ―λ‘ μΆκ° μμ μ μ²λ¦¬ν νμκ° μλ€.
λ©λͺ¨λ¦¬ λμ μμ κ΄μ°°μλ Lifecycle κ°μ²΄μ κ²°ν©λμ΄ μμΌλ©° μ°κ²°λ μλͺ μ£ΌκΈ°κ° λλλ©΄ μλμΌλ‘ μμ λλ€
μ€μ§λ νλμΌλ‘ μΈν λΉμ μ μ’ λ£ μμ μμμ μ€λͺ νλ―μ΄ LiveData λ STARTED | RESUME μνμΌ λ νμ±μνλ‘ κ°μ£ΌνκΈ° λλ¬Έμ, μ‘ν°λΉν°κ° λ°±μ€ν μ μμ λλ κ΄μ°°μκ° μλͺ μ£ΌκΈ°κ° λΉνμ±ν μνμ΄λ©΄ μ΄λ ν LiveData λ₯Ό μμ νμ§ μκΈ° λλ¬Έμ μ€λ₯κ° λ°μνμ§ μλλ€.
μλͺ μ£ΌκΈ°λ₯Ό λ μ΄μ μλμΌλ‘ μ²λ¦¬νμ§ μμ UI ꡬμ±μμλ κ΄λ ¨ λ°μ΄ν°λ₯Ό κ΄μ°°λ§ ν λΏ κ΄μ°°μ μ€μ§νκ±°λ λ€μ μμνμ§ μλλ€. LiveDataλ κ΄μ°°νλ λμ κ΄λ ¨ μλͺ μ£ΌκΈ° μνμ λ³κ²½μ μΈμνλ―λ‘ μλμΌλ‘ κ΄λ¦¬κ° λλ€.
μ΅μ λ°μ΄ν° μ μ§ λ°±κ·ΈλΌμ΄λμμ (onPause | onStop ) ν¬κ·ΈλΌμ΄λλ‘ μ νλμμ λ LiveDataλ λ€μ νμ±ν μνκ° λλ©΄μ κ΄μ°°μλ μ΅μ λ°μ΄ν°λ₯Ό μμ λ°κ² λλ€.
리μμ€ κ³΅μ μ±μμ μμ€ν μλΉμ€λ₯Ό 곡μ ν μ μλλ‘ μ±κΈν€ ν¨ν΄μ μ¬μ©νλ LiveData κ°μ²΄λ₯Ό νμ₯νμ¬ μμ€ν μλΉμ€μ ν λ² μ°κ²°νλ©΄ 리μμ€κ° νμν λͺ¨λ κ΄μ°°μκ° LiveData λ₯Ό λ³Ό μ μλ€.
LiveData μ¬μ©
LiveDataλ μΌλ°μ μΌλ‘ ViewModel ν΄λμ€ μ¬μ©λλ€. μλλ‘μ΄λ MVVM λμμΈ ν¨ν΄μμ μ¬μ©λλ€.
ViewModel
μ LiveData κ°μ²΄λ₯Ό μμ±νλ€.
2. Observer κ°μ²΄λ₯Ό λ§λ λ€. onChange()
λ©μλλ LiveData κ°μ²΄κ° 보μ ν λ°μ΄ν°κ° λ³κ²½λμμ λ, νΈμΆλλ€.
κ΄μ°°μ λ±λ‘ (observe λ©μλ) μ μ‘ν°λΉν° κΈ°μ€ onCreate()
λ©μλμμ ν΄μ£Όλ κ²μ΄ μ’λ€.
μ¬μ©μ νλμ λ°λΌ onResume()
μ μ¬λ¬λ² νΈμΆλ μ μλ λ©μλμ΄λ―λ‘ μ€λ³΅ νΈμΆμ νμ§ μλλ‘ ν΄μΌνλ€.
λν STARTED
μνκ° λμμ λ, LiveDataλ μ¦μ μ΅μ λ°μ΄ν°λ₯Ό μμ νλ€. μ΄λ μ΄λ―Έ κ΄μ°°μκ° λ±λ‘λμ΄μμ λλ§ λ°μνλ―λ‘ μ΄μ μ μ€μ μ ν΄λμμΌ νλ€.
LiveData κ°μ²΄ μ
λ°μ΄νΈ
μλ μμ λ μ‘ν°λΉν° λ΄ λ²νΌ ν΄λ¦ μ λ·°λͺ¨λΈμ μλ MutableLiveData κ°μ²΄μ κ°μ μμ νκ³ , ν΄λΉ λ°μ΄ν°λ₯Ό κ΄μ°°νλ μ‘ν°λΉν°μμ UIλ₯Ό λ³κ²½νλ€.
setValue()
: ν΄λΉ λ©μλλ λ©μΈμ€λ λμμ νΈμΆλλ€.
postValue()
: ν΄λΉ λ©μλλ λ°±κ·ΈλΌμ΄λ μ€λ λμμ μμ
μ μ²λ¦¬νκ³ λ©μΈμ€λ λμ κ°μ post νλ λ°©μμ΄λ€.
// todo ...
Last updated