[Kotlin/Android] LifecycleObserver/LifeCycle 사용하기

Programming/Android 2020. 9. 15. 13:40 Posted by 생각하는로뎅
반응형

 

1. LifeCycle이란

 

  Activity 또는 Fragment 들의 수명 주기 상태 정보를 포함하고 있는 클래스이다. 다른 객체들은 수명 주기 상태 정보를 전달 받을 수 있다.

 

 

 

2. LifeCycle 주기

 

Android 활동 수명 주기를 구성하는 상태 및 이벤트 (https://developer.android.com/topic/libraries/architecture/lifecycle?hl=ko)

 

 

 

3. 장점

 

  OnStart, OnResume... 등등 상태에 맞는 액션을 취하기 위해, Activity 또는 Fragment 로 상속된 클래스에서 함수를 오버라이드해서 사용해야 했다.

  복잡한 설계에서 특정 객체에서 OnStart, OnResume.. 등등 상태에 맞는 코드를 실행할때, listener을 이용한 잦은 CallBack으로인한 복잡도가 올라갔다.

  해당 LifecycleObserver 을 알게되면서, 간단하게 lifeCycle의 생명 주기 상태 정보를 수신 받아서 처리할 수 있었다.

 

 

 

4. 단점

 

 복잡한 앱에서, 다른 객체들에서 LifeCycle 상태를 수신해 쓴다면 그 또한 찾느라 힘들듯하다.

 

 

 

5. 사용법

 

  1) Main

class MainActivity : AppCompatActivity() {

	private lateinit var dessertTimer: DessertTimer
    
    override fun onCreate(savedInstanceState: Bundle?) {
    	...
    	dessertTimer = DessertTimer(this.lifecycle)
    	...
    }

}

  2) DesserTimer

class DessertTimer(lifecycle: Lifecycle) : LifecycleObserver{

    init {
        lifecycle.addObserver(this)
    }
 
    ....
    
    // LifeCyle 상태가 OnStart일때 호출됨
    @OnLifecycleEvent(Lifecycle.Event.ON_START)
    fun startTimer() {
    	...
    }
    
    // LifeCyle 상태가 OnStop일때 호출됨
    @OnLifecycleEvent(Lifecycle.Event.ON_STOP)
    fun stopTimer() {
        ....
    }
 }

 

반응형