본문 바로가기

[Android/Kotlin] AAC #2 - LifeCycle / LifecycleOwner

AAC - LifeCycle / LifecycleOwner

 

AAC 연관 글

 

 

LifeCycle Package

: lifecycle을 갖는 Activity/Fragment의 lifecycle에 따른 동작을 정의할 수 있는 class / interface 집합

 

 


LifeCycle

androidx.lifecycle.Lifecycle 클래스는 Activity/Fragment Component의 lifecycle 상태를 가지며, 다른 Object가 이 상태를 Observing 할 수 있도록 해주는 추상(abstract) 클래스입니다

Lifecycle 클래스에는 두 가지의 Enum을 포함

Lifecycle.Event

  • 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 이벤트에 대한 상수

 

Lifecycle.State

  • 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에 끼워 넣을 수 있도록 도와주는 역할