| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 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 | 31 |
- TEST
- GitHub
- 코드포스
- MiTweet
- AWS
- boj
- Python
- 코루틴
- Compose
- 백준
- relay
- ProGuard
- Coroutines
- MyVoca
- activity
- pandas
- android
- androidStudio
- architecture
- Hilt
- 쿠링
- Kotlin
- 암호학
- Coroutine
- Codeforces
- 프로그래머스
- livedata
- Gradle
- Rxjava
- textfield
- Today
- Total
이동식 저장소
[Android Kotlin Fundamentals] Lifecycle 본문
이 글은 Android Kotlin Fundamentals를 참고하여 작성되었습니다.
Activity의 lifecycle
Android Activity의 lifecycle을 정리해 본다.

onCreate
Activity가 처음 생성될 때 호출된다.
onStart
Activity가 화면에 처음 보이게 될 때(visible) 호출된다.
onRestart
Activity가 화면에 다시 보이게 될 때 호출된다.
onResume
Activity가 focus를 잡게 될 때 호출된다. 사용자는 focus를 잡은 Activity만 조작할 수 있다. 여러 앱을 동시에 띄우면 여러 개의 Activity가 focus를 잡을 수도 있다.
Focus와 visible의 차이를 잘 기억하자.
onPause
Activity가 focus를 잃을 때 호출된다. 사용자는 focus를 잃은 Activity를 조작할 수 없다.
Focus를 잃는 경우는 아주 많다. 알림창이 화면을 가리거나, 공유 버튼을 클릭해서 공유할 앱을 선택하거나, 전화가 오는 경우 등 focus를 얻고 잃는 경우는 매우 다양하다. 따라서 onResume과 onPause는 가벼워야 한다. 콜백이 실행된 후에 focus를 실제로 잃기 때문이다. 만약 onPause가 매우 무겁다면, onPause를 실행하느라 전화가 왔다는 알림을 늦게 보여줄 수도 있고, 그 사이 전화가 끊길 수도 있다. 대학 합격 전화였다면 매우 끔찍했을 것이다.
onStop
Activity가 화면에서 사라질 때(invisible) 호출된다. 홈 화면으로 가는 등의 경우에 호출될 것이다.
onDestroy
Activity가 완전히 종료될 때 호출된다. 앱을 종료하는 경우 등에 호출될 것이다.
Fragment의 lifecycle
Fragment의 lifecycle은 Fragment 전용 콜백만 몇 개 더 추가된 것을 빼면 Activity와 거의 비슷하다.

onAttach
Fragment가 자신을 보여줄 Activity에 연결되었을 때(associated with) 호출된다.
onCreateView
Fragment의 레이아웃을 inflate할 때 호출된다. Activity의 onCreate와 비슷한 역할을 한다.
onViewCreated
onCreateView가 root view를 반환한 즉시 호출된다. 하지만 이전에 저장된 값은 아직 복원되지 않았다. (savedState 등)
onDestroyView
Fragment의 뷰가 더 이상 보여질 필요가 없을 때 호출된다. 나중에 Fragment를 다시 보여줄 필요가 생긴다면, onCreateView에서 새로운 뷰가 만들어질 것이다.
onDetach
Fragment가 더 이상 Activity에 attach될 필요가 없을 때 호출된다. 주로 Fragment를 완전히 종료할 때 호출된다.
읽을거리
'Primary > Android' 카테고리의 다른 글
| [Android] Cannot invoke setValue on a background thread (0) | 2021.03.14 |
|---|---|
| [Android] Transformations.map이 동작하지 않을 때 (0) | 2021.02.17 |
| [Android Kotlin Fundamentals] Navigation path (0) | 2021.02.02 |
| Inflate()에서 매개변수 attachToParent의 의미 (2) | 2020.12.22 |
| ViewBinding 사용 시 레이아웃 크기가 wrap_content로 고정되는 문제 (0) | 2020.12.21 |