콜백을 잘못 구현할 경우 발생할 수 있는 문제
- 사용자가 앱을 사용하는 도중에 전화가 걸려오거나 다른 앱으로 전환할 때 비정상 종료되는 문제
- 사용자가 앱을 활발하게 사용하지 않는 경우 귀중한 시스템 리소스가 소비되는 문제
- 사용자가 앱에서 나갔다가 나중에 돌아왔을 때 사용자의 진행 상태가 저장되지 않는 문제
- 화면이 가로 방향과 세로 방향 간에 회전할 경우, 비정상 종료되거나 사용자의 진행 상태가 저장되지 않는 문제
1. onCreate()
- Activity가 처음 생성될 때 한 번만 호출됩니다.
- 필수로 구현해야합니다.
- 초기화 작업을 수행하거나 UI 구성을 설정합니다.
- setContentView()를 호출하여 Activity의 사용자 인터페이스 레이아웃을 정의해야 합니다.
- onCreate()가 완료되면 onStart() 및 onResume() 메서드를 연속으로 호출합니다.
2. onStart()
- Activity가 사용자에게 표시되기 직전에 호출됩니다.
- 사용자에게 보여지지만, 아직 포커스를 받거나 상호 작용을 받지 않습니다.
- UI를 초기화하거나 데이터를 로드하는 등의 작업을 수행할 수 있습니다.
- onStart()가 완료되면 Activity가 Resume 상태로 전환되고 시스템에서 onResume() 메서드를 호출합니다.
3. onResume()
- Activity가 사용자와 상호작용을 시작하기 직전에 이 콜백을 호출합니다.
- 앱이 사용자와 상호작용이 가능한 상태입니다.
- 앱의 핵심 기능은 대부분 onResume() 메서드에서 구현됩니다.
- onPause() 콜백은 항상 onResume()를 따릅니다.
4. onPause()
- Activity가 포커스를 잃고 일시중지됨 상태로 전환될 때 onPause()를 호출합니다.
- 뒤로 또는 최근 버튼을 탭할 때
- Dialog 같은 새로운 반투명 Activity가 열릴 때
- 멀티 윈도우 모드
- 일시적으로 멈추지만 완전히 종료되지는 않습니다.
- 사용자에게 필요하지 않은 동안 리소스를 해제할 수도 있습니다.
- 애플리케이션 또는 사용자 데이터를 저장하거나, 네트워크를 호출하거나, 데이터베이스 트랜잭션을 실행하는 데 onPause()를 사용해서는 안 됩니다.
- 다시 시작되면 시스템은 다시 한번 onResume() 콜백을 호출합니다.
- 완전히 보이지 않게 되면 시스템은 onStop()를 호출합니다.
5. onStop()
- Activity가 사용자에게 더 이상 표시되지 않는 경우 호출합니다.
- 다른 Activity나 다른 앱으로 전환되었을 때
- Lifecycle이 실행할 필요가 없는 기능을 모두 정지할 수 있습니다.
- 앱이 사용자에게 표시되지 않는 동안 필요하지 않은 리소스를 해제하거나 조정합니다.
- CPU를 비교적 많이 사용하는 종료 작업을 실행합니다.
- 다시 시작되면 시스템은 onRestart()를 호출합니다.
- 종료하면 시스템은 onDestroy()를 호출합니다.
6. onDestroy()
- Activity가 소멸되기 전에 이 콜백을 호출합니다.
- Activity에서 finish() 호출되어 종료될 때
- 최종 콜백
- 기기회전, 멀티 윈도우 모드 전환 등 구성 변경이 발생하여 일시적으로 소멸할 때
- 시스템은 새로운 Activity 인스턴스를 만든 onCreate()를 호출합니다.
- Activity에서 finish() 호출되어 종료될 때
- Activity와 관련된 모든 리소스를 해제합니다.
참고문서
https://developer.android.com/guide/components/activities/activity-lifecycle?hl=ko
'Android > 기본' 카테고리의 다른 글
[Android] 앱 아키텍처 가이드 (0) | 2024.11.12 |
---|---|
[Android]안드로이드 스튜디오 로그(Log) 가이드 (0) | 2024.11.10 |
[Android] Android 자동 테스트 작성 및 유형 (0) | 2024.09.06 |
[Android] 발생할 수 있는 Exception종류와 처리 방법 (1) | 2024.06.14 |
[Android] Deep Link 딥링크 (0) | 2024.03.18 |
[Android] MVVM 패턴(Model-View-ViewModel) (1) | 2024.03.14 |
[Android] Retrofit2와 RxJava의 통신 실패 관리 (0) | 2024.03.13 |
[Android] App components 앱 구성요소 (0) | 2024.03.06 |