반응형
Android의 Lifecycle.State란?
Lifecycle.State는 Android 컴포넌트(예: Activity, Fragment)의 생명 주기 상태를 나타내며, 특정 상태에서 어떤 작업을 수행할 수 있는지를 결정하는 데 유용합니다.
🔹 Lifecycle.State 순서 및 설명
1. INITIALIZED
- 컴포넌트가 생성되었지만, 아직 onCreate() 메서드가 호출되기 전의 상태입니다.
- 이 상태에서는 컴포넌트가 활성화되지 않았으므로 아무 작업도 수행할 수 없습니다.
2. CREATED
- onCreate() 메서드 호출 후의 상태입니다.
- UI 초기화 또는 데이터 로드 작업을 수행할 수 있습니다.
- 하지만 아직 화면에 표시되지는 않습니다.
3. STARTED
- onStart() 메서드 호출 후의 상태입니다.
- 화면에 표시되기 시작하지만, 사용자와의 상호작용은 불가능합니다.
- UI 업데이트 및 애니메이션 시작 등의 작업을 수행할 수 있습니다.
4. RESUMED
- onResume() 메서드 호출 후의 상태입니다.
- 화면이 완전히 표시되고 사용자와의 상호작용이 가능합니다.
- 버튼 클릭, 입력 처리 등의 작업을 수행할 수 있습니다.
5. DESTROYED
- onDestroy() 메서드 호출 후의 상태입니다.
- 컴포넌트가 완전히 종료되었으며 더 이상 사용할 수 없습니다.
- 리소스 해제 및 백그라운드 작업 정리 등의 작업을 수행해야 합니다.
🔹 상태 변화 흐름
변화 유형 상태 흐름
생성 | INITIALIZED → CREATED → STARTED → RESUMED |
일시 정지 | RESUMED → STARTED (예: 다른 Activity가 전면에 나타날 때) |
재개 | STARTED → RESUMED (예: 일시 정지된 Activity가 다시 활성화될 때) |
중지 | RESUMED → STARTED → CREATED (예: Activity가 완전히 가려질 때) |
종료 | RESUMED → STARTED → CREATED → DESTROYED (예: Activity가 종료될 때) |
🔹 Lifecycle.State 다이어그램
INITIALIZED
↓
CREATED
↓
STARTED
↓
RESUMED
↑ ↓
| (일시 정지)
| ↓
| STARTED
| ↓
| CREATED
| ↓
| DESTROYED
|
(종료)
🔹 Lifecycle.State 활용 방법
- UI 업데이트 최적화
- STARTED 상태에서만 UI를 업데이트하여 불필요한 리소스 낭비 방지
- 예: ViewModel을 사용한 데이터 업데이트 시점 조정
- 사용자 입력 처리
- RESUMED 상태에서만 사용자 입력을 처리하여 오류 방지
- 예: 버튼 클릭 이벤트 리스너 설정
- 리소스 정리
- DESTROYED 상태에서 네트워크 요청 취소 및 데이터 저장
- 예: onDestroy()에서 API 호출 취소
🔹 LifecycleObserver와 LifecycleOwner 활용
1. LifecycleObserver를 사용한 상태 감지
class MyObserver : DefaultLifecycleObserver {
override fun onCreate(owner: LifecycleOwner) {
super.onCreate(owner)
Log.d("LifecycleObserver", "onCreate 호출됨")
}
override fun onResume(owner: LifecycleOwner) {
super.onResume(owner)
Log.d("LifecycleObserver", "onResume 호출됨")
}
}
2. LifecycleOwner에 LifecycleObserver 등록
class MyActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
lifecycle.addObserver(MyObserver())
}
}
- LifecycleObserver를 활용하면 Activity나 Fragment의 상태 변화에 따라 특정 동작을 수행할 수 있습니다.
- 예를 들어, onResume()에서 센서 활성화, onPause()에서 센서 비활성화 같은 작업을 자동으로 수행할 수 있습니다.
🔹 Lifecycle.State vs Lifecycle.Event
구분 설명
Lifecycle.State | 현재 Activity 또는 Fragment의 생명 주기 상태를 나타냄 |
Lifecycle.Event | Lifecycle.State를 변경하는 이벤트 (예: ON_CREATE, ON_START, ON_RESUME 등) |
🔗 참고 자료
반응형