Programming/Android
[Kotlin/Android] LifecycleObserver/LifeCycle 사용하기
생각하는로뎅
2020. 9. 15. 13:40
반응형
1. LifeCycle이란
Activity 또는 Fragment 들의 수명 주기 상태 정보를 포함하고 있는 클래스이다. 다른 객체들은 수명 주기 상태 정보를 전달 받을 수 있다.
2. LifeCycle 주기
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() {
....
}
}
반응형