일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
- apache nginx
- 디자인 패턴 예제
- 안드로이드 스튜디오 custom dialog
- savedinstancestate
- dagger error
- 아파치란
- Thread
- java
- java thread 예제
- hilt error
- edittext 연결
- AAC
- 아파치 엔진엑스
- 이중for문 사용 안하기
- 안드로이드 스튜디오 style
- 리사이클러뷰 아이템 재사용
- 객체지향 프로그래밍 5가지 원칙
- 안드로이드 스튜디오 반복되는 레이아웃 코드
- LifeCycle
- 안드로이드 스튜디오 인터넷 연결 확인
- Kotlin
- recyclerview item recycle
- apache란
- 자바 스레드 예제
- 안드로이드 디자인패턴
- 변수
- 안드로이드 스튜디오 커스텀 다이얼로그
- 안드로이드 스튜디오 tts
- 다른 객체 리스트의 비교
- 안드로이드 스튜디오 인터넷 연결 안되어 있을 때
- Today
- Total
Sam Story
라이프 사이클 (Lifecycle) 본문
1. 라이프 사이클 (Lifecycle) 이란?
AAC 에서 말하는 라이프 사이클은 생명주기 모니터링을 돕는 라이브러리다.
Activity 나 Fragment 의 현재 생명주기 상태를 기반으로 동작을 조정하는 클래스 및 인터페이스를 제공한다.
2. 라이프 사이클의 구성요소
- Lifecycle
라이프 사이클을 나타내는 객체
- Lifecycle Owner
액티비티나 프래그먼트의 생명주기를 라이프사이클 객체에 담고
라이프 사이클 객체를 통해 다른 곳에서 해당 화면의 생명주기를 모니터링 할 수 있다.
자기 자신의 생명주기를 담은 라이프사이클 객체가 Lifecycle Owner 이다.
appCompatActivity 는 내부적으로 LifeCycleOwner를 구현 하고 있다.
그래서 Lifecycle객체를 직접 참조할 수 있음.
- Lifecycle Observer
라이사이클 객체를 통해서 화면 밖에서 모니터링이 가능하지만
생명주기에 따른 동작은 여전히 화면에서만 컨트롤 할 수 있다
이렇기 때문에 화면밖에서도 생명주기에 따른 동작을 컨트롤 하기위해서
Lifecycle Observer를 구현한 클래스에서 생명주기 메서드를 정의할 수 있고
owner가 해당 생명주기 상태가되면 자동으로 수행된다.
간단한 예제를 통해 좀더 알기 쉽게 확인해보자.
3. 예제
오늘 예제는 별다른 레이아웃 없이 생명주기를 로그로 확인해보는
간단한 예제로 준비해 보았다.
Lifecycle Observer 클래스
package com.example.lifecycle_aac
import android.util.Log
import androidx.lifecycle.DefaultLifecycleObserver
import androidx.lifecycle.LifecycleOwner
class LifecycleObserver: DefaultLifecycleObserver{
val TAG = "라이프 사이클 옵저버"
override fun onCreate(owner: LifecycleOwner) {
super.onCreate(owner)
Log.d(TAG, "onCreate: ")
}
override fun onStart(owner: LifecycleOwner) {
super.onStart(owner)
Log.d(TAG, "onStart: ")
}
override fun onResume(owner: LifecycleOwner) {
super.onResume(owner)
Log.d(TAG, "onResume: ")
}
override fun onPause(owner: LifecycleOwner) {
super.onPause(owner)
Log.d(TAG, "onPause: ")
}
override fun onStop(owner: LifecycleOwner) {
super.onStop(owner)
Log.d(TAG, "onStop: ")
}
override fun onDestroy(owner: LifecycleOwner) {
super.onDestroy(owner)
Log.d(TAG, "onDestroy: ")
}
}
간단한 설명을 더 하자면 생명주기 메서드 들이 override 된 것을 볼 수 있는데
이 메서드들은 Lifecycle Owner 의 생명주기를 override 해서 관찰 하는 것이다.
메인 액티비티
package com.example.lifecycle_aac
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.util.Log
class MainActivity : AppCompatActivity() { // 이 액티비티가 LifeCycle Owner가 되는것
val TAG = "메인액티비티"
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
// 만들어준 LifecycleObsever 클래스를 인자로 해준다
lifecycle.addObserver(LifecycleObserver())
Log.d(TAG, "onCreate: ")
}
override fun onStart() {
super.onStart()
Log.d(TAG, "onStart: ")
}
override fun onResume() {
super.onResume()
Log.d(TAG, "onResume: ")
}
override fun onPause() {
super.onPause()
Log.d(TAG, "onPause: ")
}
override fun onStop() {
super.onStop()
Log.d(TAG, "onStop: ")
}
override fun onDestroy() {
super.onDestroy()
Log.d(TAG, "onDestroy: ")
}
}
이렇게 코드를 짰을때 생명주기가 어떻게 돌아가는지 확인 해보자.
실행 결과
보다시피 액티비티 즉 Lifecycle Owner 와 같은 생명주기가 흐르고
Observer 클래스에서 Lifecycle Owner 생명주기에서 일어날 일들을 Observer 클래스 에서 작성할 수 있다.
이렇게 액티비티에서 생명주기 쪽 코드를 분리를 하게 되면
액티비티 쪽에서 작성해야 할 코드들을 줄 일 수 있고 하는 역할이 더 분명하게 나뉘는 장점이 있다.
이 라이브러리를 잘 사용하면 여러 생명주기에 따른 처리를 더 깔끔하게 처리할 수 있다.
오늘 예제의 github 주소
nam-su/LifecycleExample: AAC Lifecycle 예제 (github.com)
GitHub - nam-su/LifecycleExample: AAC Lifecycle 예제
AAC Lifecycle 예제. Contribute to nam-su/LifecycleExample development by creating an account on GitHub.
github.com

'Android' 카테고리의 다른 글
라이브 데이터 (LiveData) (0) | 2024.04.13 |
---|---|
뷰모델 (ViewModel) (0) | 2024.04.11 |
데이터 바인딩 (Data Binding) (1) | 2024.04.01 |
레트로핏 (Retrofit) (0) | 2024.03.26 |
뷰 바인딩 (ViewBinding) (0) | 2024.03.19 |