일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- Compose
- architecture
- 암호학
- textfield
- MiTweet
- boj
- Kotlin
- activity
- Coroutine
- androidStudio
- Gradle
- Hilt
- android
- Python
- pandas
- 백준
- 프로그래머스
- relay
- ProGuard
- Rxjava
- TEST
- GitHub
- Coroutines
- MyVoca
- AWS
- 쿠링
- 코드포스
- livedata
- Codeforces
- 코루틴
- 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의 의미 (1) | 2020.12.22 |
ViewBinding 사용 시 레이아웃 크기가 wrap_content로 고정되는 문제 (0) | 2020.12.21 |