본문 바로가기

Android 개인공부

AAC LifeCycles

반응형

Lifecycles는 라이브러리 이름대로 생명주기 모니터링을 도우며 LifecycleOwner 와 LifecycleObserver로 구성되어 있다.

 

LifecycleOwner는 getLifecycle() 메서드에서 자신의 생명주기를 담은Lifecycle 객체를 반환하는 인터페이스이다.

class MainActivity : AppCompatActivity() {

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        // getLifecycle()
        lifecycle.addObserver(LifeCycleLogger())
    }
}

 

LifecycleObserver는 해당 메서드에 주석을 추가함으로써 구성 요소의 수명 주기 이벤트를 모니터링할 수 있는 클래스이다.

class LifeCycleLogger() : LifecycleObserver {
    companion object {
        const val TAG = "LifeCycleLogger"
    }

    @OnLifecycleEvent(Lifecycle.Event.ON_CREATE)
    fun onCreated() {
        Log.d(TAG, "onCreated")
    }

    @OnLifecycleEvent(Lifecycle.Event.ON_START)
    fun onStart() {
        Log.d(TAG, "onResume")
    }

    @OnLifecycleEvent(Lifecycle.Event.ON_RESUME)
    fun onResume() {
        Log.d(TAG, "onResume")
    }

    @OnLifecycleEvent(Lifecycle.Event.ON_PAUSE)
    fun onPause() {
        Log.d(TAG, "onPause")
    }

    @OnLifecycleEvent(Lifecycle.Event.ON_STOP)
    fun onStop() {
        Log.d(TAG, "onStop")
    }

    @OnLifecycleEvent(Lifecycle.Event.ON_DESTROY)
    fun onDestroy() {
        Log.d(TAG, "onDestroy")
    }
}

이를 모두 결합하면 수명 주기 이벤트를 모니터링하고 현재 수명 주기 상태를 쿼리할 수 있는 Lifecycle-aware 컴포넌츠를 생성할 수 있다.

 

추가로 LifeCycle은Enum Class 2가지인 Event, State가 있는데

 

Event

 - Activity or Fragment에서 발생하는 생명주기 Event

  • ON_ANY
  • ON_CREATE
  • ON_DESTROY
  • ON_PAUSE
  • ON_RESUME
  • ON_START
  • ON_STOP

 

State

 - Activity or Fragment의 현재 상태

  • CREATED : onCreate()의 Call 이후 or onStop()의 Call 이후
  • DESTROYED : onDestory()이 Call 되기 직전
  • INITIALIZED : onCreate()이 Call이 되지 않은 시점
  • RESUMED : onResume()이 Call 된 시점
  • STARTED : onStart() Call 이후 or onPause() Call 직전

로 되어있다.

 

반응형

'Android 개인공부' 카테고리의 다른 글

Repository Pattern  (0) 2022.07.21
Android Custom Progress Dialog  (0) 2021.06.12
Kotlin?  (0) 2020.11.26
코틀린 let, with, apply, also, run  (0) 2020.10.12
FCM 푸쉬메시지 테스트 앱  (0) 2020.08.27