LifeCycles
👻 생명주기 모니터링을 돕는 라이브러리 입니다.
구성
Owner는 생명주기가 필요한 Activity나 Fragment를 말하고, Observer는 Owner의 생명주기 처리를 담당합니다.
LifeCycle 객체에 Observer를 등록하면 Owner 생명주기 변경 시 LifeCycle 객체가 등록된 Observer를 실행하는 구조입니다.
LifeCycle
Activity와 Fragment의 생명주기 정보를 가지고 있는 클래스 입니다.
LifeCycle 객체는 생명주기 변화를 감지하고, 변화가 발생하면 등록된 Observer를 실행하는 역할을 합니다.
LifeCycle class는 컴포넌트의 생명주기 추적을 위해 2가지의 Enum을 사용합니다.
- Event
- 프레임워크 및 LifeCycle class에 보내지는 생명주기 이벤트 입니다.
- Activity나 Fragment의 콜백 이벤트로 매핑됩니다.
- LifeCycleOwner의 생명주기 이벤트에 따른 상태
- 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 이벤트에 대한 상수
- State
- LifeCycle 객체에 의해 추적되어지는 컴포넌트의 현재 상태 입니다.
- CREATED : onCreate() 이후 or onStop()의 직전
- DESTROYED : onDestory()이 Call 되기 직전
- INITIALIZED : onCreate()이 Call이 되지 않은 시점
- RESUMED : onResume()이 Call 된 시점
- STARTED : onStart() Call 이후 or onPause() Call 직전
- LifeCycle 객체에 의해 추적되어지는 컴포넌트의 현재 상태 입니다.
예를 들어, State가 Created에서 Started가 되면 ON_START라는 Event가 발생하게 됩니다.
LifeCycleOwner
LifecycleOwner는 생명주기를 가지고 있음을 나타내는 getLifecycle() 단일 메소드 인터페이스 입니다.
AppCompatActivity와 Fragment가 LifeCycleOwner를 구현하고 있어 getLifecycle()를 호출해 Lifecycle을 획득할 수 있습니다.
getLifecycle() 메소드로 Activity, Fragement에서 생명주기를 분리해 LifeCycle 객체에 담아 다른 곳에서도 해당 화면의 생명주기를 모니터링 할 수 있습니다.
LifeCycleObserver
Activity와 Fragment의 생명주기 변화에 대한 event를 받는 인터페이스 입니다.
LifeCycleObserver 인터페이스를 직접 사용하지 않고, 이를 implement한 DefaultLifeCycleObserver 또는 LifecycleEventObserver를 사용합니다.
- DefaultLifeCycleObserver
- LifeCycleOwner 상태 변경을 관찰하는 콜백 인터페이스 입니다.
- LifecycleEventObserver
- 생명주기 변화를 수신해 receiver에게 보낼 수 있는 class 입니다.
- onStateChanged() 단일 메서드
- 생명주기 변화 시 event가 넘어오고 이를 분기해 필요한 코드를 호출하는 구조입니다.
사용
사용법은 단순합니다. getLifecycle() 메소드를 호출하여 Lifecycle을 받아 addObserver() 메서드로 추가하면 됩니다.
[참고]
https://velog.io/@rhkddud9531/AAC-LifeCycle
AAC-LifeCycle
들어가기전에 앱을 만들다 보면 수명주기에 관련된 코드를 넣을 때가 있다. 이러한 코드를 작성하다 보면 생명주기 관련 메서드에 의도치 않게 많은 양의 코드가 들어가게 된다. 이러한 생명주
velog.io
https://developer.android.com/topic/libraries/architecture/lifecycle?hl=ko
수명 주기 인식 구성요소로 수명 주기 처리 | Android 개발자 | Android Developers
새 Lifecycle 클래스를 사용하여 활동 및 프래그먼트 수명 주기를 관리합니다.
developer.android.com
'프로그래밍 > Android' 카테고리의 다른 글
안드로이드 코루틴 (Coroutine) (0) | 2024.01.12 |
---|---|
Android JetPack Compose (0) | 2023.09.14 |
Android Architecture Components - ViewModel (0) | 2023.09.06 |
Android Architecture Components(AAC)와 Data Binding (0) | 2023.08.18 |
안드로이드 스튜디오 레이아웃 (Layout)의 종류 (0) | 2022.08.15 |