ViewModel
Lifecycle-aware component
ViewModel μ΄λ
μλλ‘μ΄λ νλ μμν¬λ Activity / Fragment μ κ°μ UI 컨νΈλ‘€λ¬μ μλͺ
μ£ΌκΈ°λ₯Ό κ΄λ¦¬νλ€.
μμ€ν
μμ UI 컨νΈλ‘€λ¬λ₯Ό μ κ±°νκ±°λ λ€μ λ§λλ κ²½μ°, 컨νΈλ‘€λ¬μ μ μ₯λ λͺ¨λ UI κ΄λ ¨ λ°μ΄ν°κ° μμ λλ€.
λλ°μ΄μ€ νλ©΄ νμ νλ κ²½μ° μμ κ°μ΄ 컨νΈλ‘€λ¬λ₯Ό μ κ±°ν ν μλ‘ μμ±μ νλ€. λ¨μν λ°μ΄ν°λ₯Ό 볡μνκΈ° μν΄μλ onSaveInstanceState()
λ©μλλ₯Ό μ¬μ©νμ¬ onCreate()
νΈμΆ μ λ°μ΄ν°λ₯Ό 볡μν μ μλ€.
νμ§λ§ μ΄ λ°©λ²μ μλμ λ°μ΄ν°μλ§ μ ν©νλ€.
ViewModel
κ°μ²΄λ μ΄λ¬ν μν©μμ μλμΌλ‘ 보κ΄λμ΄ μ‘ν°λΉν° / νλκ·Έλ¨ΌνΈ μΈμ€ν΄μ€μμ μ¦μ μ¬μ©ν μ μλ€.
ꡬν
μμ μ½λμ κ°μ΄ λ·°λͺ¨λΈ ν΄λμ€λ Jetpackμμ μ 곡νλ ViewModel
μ μμνμ¬ λ§λ€ μ μκ³ ,
μ‘ν°λΉν°λ νλκ·Έλ¨ΌνΈμμ κ°μ²΄μμ±νμ¬ μ¬μ©ν μμλ€.
μλͺ
μ£ΌκΈ°
ViewModel μ LifecycleOwners μ νΉμ μΈμ€ν΄μ€νλ³΄λ€ μ€λ μ§μλλλ‘ μ€κ³λμ΄μλ€. λ·°λͺ¨λΈ κ°μ²΄μλ View, Activity, Fragment κ°μ²΄λ Contextλ₯Ό μ°Έμ‘°νλ©΄ μλλ€. (λ·°λͺ¨λΈμ λΌμ΄νμ¬μ΄ν΄μ UI λΌμ΄νμ¬μ΄ν΄λ³΄λ€ μ€λ μ§μλκΈ° λλ¬Έμ onCleared() ν¨μκ° νΈμΆλκΈ° μ , UI μ κ΄λ ¨ κ°μ²΄λ Context λ₯Ό μ°Έμ‘°νκ² λλ©΄ GCμμ μκ±°νμ§ λͺ»ν΄, λ©λͺ¨λ¦¬ λμκ° λ°μνλ€)
μμ€ν μλΉμ€λ₯Ό μ°Ύλλ° ApplicationContext κ° νμν κ²½μ°μλ AndroidViewModel ν΄λμ€λ₯Ό νμ₯νμ¬ μ¬μ©ν μ μλ€. ViewModel κ°μ²΄μ λ²μλ ViewModel μ κ°μ Έμ¬ λ ViewModelProvider μ μ λ¬λλ Lifecycle λ‘ μ§μ λλ€. λ²μλ‘ μ§μ λ Lifecycle μ΄ μμ ν λλ λ κΉμ§ λ©λͺ¨λ¦¬μ λ¨μμλ€. μ μ½λμ μ‘ν°λΉν°μμ λ·°λͺ¨λΈμ μ΄κΈ°νν λ ktx λΌμ΄λΈλ¬λ¦¬λ₯Ό μ¬μ©νλ κ²½μ° κ°μ²΄μ λ²μλ₯Ό μ½κ² μ§μ ν μ μλ€.
νλκ·Έλ¨ΌνΈκ°μ λ°μ΄ν° 곡μ
νλμ μ‘ν°λΉν°μμ λ μ΄μμ νλκ·Έλ¨ΌνΈλ₯Ό μ¬μ©ν λ κ°κ°μ λ·°λͺ¨λΈμ μμ±νκ² λλ©΄ λ μ΄μμ νλκ·Έλ¨ΌνΈμμμ κ²°ν©μ΄ μ½κ² μ²λ¦¬λ μ μλ λΆλΆμ΄κΈ°μ 곡μ λλ λ·°λͺ¨λΈμ μ¬μ©ν΄μΌ νλ€.
μ μ½λμ κ°μ΄ μ¬μ©νλ©΄ μ‘ν°λΉν°μ μ°κ²°λ λ·°λͺ¨λΈ κ°μ²΄λ₯Ό 곡μ©μΌλ‘ νλκ·Έλ¨ΌνΈμμ μ¬μ©ν μ μλ€.
λ°©λ²1 μμμ²λΌ activity-ktx μ κ°μ΄ fragment-ktx λΌμ΄λΈλ¬λ¦¬λ₯Ό μ¬μ©νμ¬ κ°λ¨νκ² μΈμ€ν΄μ€ν ν μ μκ³ ,
λ°©λ²2 λ κΈ°μ‘΄ μ‘ν°λΉν°μμ λ·°λͺ¨λΈμ μ°κ²°νκ±° κ°μ΄ μ¬μ©νλ©΄ λλ€. μ¬κΈ°μλ ViewModelProviderμ Lifecycleμ this
λ‘ μ€μ νκ²λλ©΄ μκΈ° μμ (νλκ·Έλ¨ΌνΈ)μ λΌμ΄νμ¬μ΄ν΄μ λ°λΌκ°κΈ° λλ¬Έμ μ°κ²°λ μ‘ν°λΉν° λΌμ΄νμ¬μ΄ν΄μμ°κ²°μμΌμ€μΌ νλ€.
Last updated