[TIL] 20201215
todoPermalink
What I learnedPermalink
-
시스템은
ViewModel
인스턴스를lifecycleOwner
의 lifecycle 동안만 메모리에 유지시킨다. (장기 저장소에 유지하지 않음.) - ViewModel에
Context
또는View
에 대한 참조를 저장하지 말자. -> 메모리 누수 발생 가능.- ViewModel의
onCleared()
는 observer의 구독을 취소/삭제하지만, Context 또는 View에 대한 참조까지 끊지는 않는다.
- ViewModel의
LiveData
는lifecycle-aware Observable
로, active한 observer들(LifecycleOwner) 에게만 notify를 시킨다.- STARTED or RESUMED.
- AppCompatActivity 를 쭉 따라가다보면
ComponentActivity
를 만나게 되는데,LifecycleOwner
를 구현하고있음을 알 수 있다.- 현재 lifecycle 상태를 알리는 Observable,
LifecycleOwner
- 현재 lifecycle 상태를 알리는 Observable,
public class ComponentActivity
extends androidx.core.app.ComponentActivity
implements LifecycleOwner, //
-
LiveData 의
setValue()
는 메인스레드에서만 호출 가능하다. 백그라운드 스레드에서는postValue()
를 사용. -
lifecycle-viewmodel-savedstate
모듈도 ViewModel 상태를 지속(persist) 시키기 위해onSaveInstanceState()
와onRestoreInstanceState()
를 사용하지만, 작업을 편리하게 해준다. -
Fragment 에서 액티비티는
requireActivity()
로 얻는다.
Leave a comment