AAC - LifeCycle / LifecycleOwner
AAC 연관 글
- AAC #1 - Android Architecture Components
- AAC #2 - LifeCycle / LifecycleOwner (현재 글)
- AAC #3 - LiveData
- AAC #4 - ViewModel
- AAC #5 - Room
LifeCycle Package
- androidx.lifecycle Package
: lifecycle을 갖는 Activity/Fragment의 lifecycle에 따른 동작을 정의할 수 있는 class / interface 집합
LifeCycle
androidx.lifecycle.Lifecycle 클래스는 Activity/Fragment Component의 lifecycle 상태를 가지며, 다른 Object가 이 상태를 Observing 할 수 있도록 해주는 추상(abstract) 클래스입니다
Lifecycle 클래스에는 두 가지의 Enum을 포함
- ON_ANY : LifecycleOwner의 모든 event에 대한 상수
- ON_CREATE : LifecycleOwner의 onCreate 이벤트에 대한 상수
- ON_DESTROY : LifecycleOwner의 onDestory 이벤트에 대한 상수
- ON_PAUSE : LifecycleOwner의 onPause 이벤트에 대한 상수
- ON_RESUME : LifecycleOwner의 onResume 이벤트에 대한 상수
- ON_START : LifecycleOwner의 onStart 이벤트에 대한 상수
- ON_STOP : LifecycleOwner의 onStop 이벤트에 대한 상수
- CREATED : Owner의 onCreate() 이후나 onStop() 직전에 바뀜
- DESTROYED : Owner의 onDestroy()가 불리기 직전에 바뀜
- INITIALIZED : Owner의 onCreate()가 불리기 직전에 바뀜
- RESUMED : Owner의 onResume()이 불린 이후에 바뀜
- STARTED : Owner의 onStart() 이후나 onPause() 직전에 바뀜
아래 처럼 Observer Class를 등록하면 Lifecycle 상태에 따라 동작확인 가능
class MyLifeObserver : LifecycleObserver {
@OnLifecycleEvent(Lifecycle.Event.ON_RESUME)
fun onResume(){
}
@OnLifecycleEvent(Lifecycle.Event.ON_PAUSE)
fun onPause(){
}
}
ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ
aLifecycleOwner.getLifecycle().addObserver(MyLifeObserver())
LifecycleOwner
androidx.lifecycle.LifecycleOwner는 단일 method를 가진 Interface입니다
( getLifecycle() - Owner의 Lifecycle을 반환하는 추상메서드)
LifecycleOwner는 각각의 Activity/Fragment의 Lifecycle의 Ownership을 갖고, 이를 구현하여 각 Component에 끼워 넣을 수 있도록 도와주는 역할