액티비티의 생명주기
액티비티의 생명 주기 메서드
onCreate()
✔ 액티비티가 만들어질 때 호출
onStart()
✔ 액티비티가 화면에 나타날 때 호출. 화면에 보이기 시작한다.
onResume()
✔ 액티비티가 화면에 나타날 때 호출. 실제 액티비티가 실행되고 있는 중이다.
onPause()
✔ 액티비티의 화면이 가려질 때 호출. 액티비티의 화면의 일부가 다른 액티비티에 의해 가려진다.
onStop()
✔ 액티비티의 화면이 없어질 때 호출. 다른 액티비티가 실행돼서 화면이 완전히 가려질 때 호출된다.
onDestroy()
✔ 액티비티가 종료될 때 호출
생명주기 콜백
액티비티를 생성해서 화면에 나타내는 상황
◽ 액티비티는 onCreate() 메서드로 생성된 다음 화면 구성 요소를 메모리에 로드하고, onStart()와 onResume()에서 화면의 구성 요소를 나타내고 사용자와의 상호작용을 시작한다.
◽ onResume() 메서드 다음의 상태 표시인 Resumed(실행 중)는 액티비티가 화면에서 실행되고 있음을 의미한다.
액티비티를 화면에서 제거하는 상황
◽ 뒤로가기를 하거나 finish() 메서드로 액티비티를 종료하면 onPause()와 onStop()이 동시에 실행되고, 최종적으로 onDestroy()가 호출되면서 액티비티가 메모리에서 제거된다.
액티비티를 종료하지 않고 현재 액티비티에서 새로운 액티비티를 실행하는 상황
◽ 현재 액티비티의 생명 주기가 onPause()를 거쳐서 onStop() 까지만 호출되고 종료되지는 않는다.
◽ 새로 생성된 액티비티는 onStart()와 onResume()을 연속적으로 호출한 후 실행 상태가 된다.
새로운 액티비티가 현재 액티비티를 모두 가리지 않고 생성되는 상황
◽ 현재 액티비티에서 실행되는 새로운 액티비티가 반투명하거나 전체 화면이 아니라서 현재 액티비티의 영역이 1dp라도 화면에 표시되면 onPause()까지만 진행된 후 Paused 상태에서 대기하고, 새로 생성됐던 액티비티가 종료되면 onStart()를 거치지 않고 onResume()이 호출된다.
프래그먼트의 생명 주기
프래그먼트의 생명 주기 메서드
onAttach()
✔ 프래그먼트 매니저를 통해 액티비티에 프래그먼트가 추가되고 commit 되는 순간 호출된다.
✔ onAttach()를 통해 넘어오는 Context에서만 상위 액티비티를 꺼낼 수 있다.
onCreate()
✔ 뷰와 관련된 것을 제외한 프래그먼트 자원(변수)을 초기화할 때 사용한다.
onCreateView()
✔ 뷰를 초기화하기 위해 사용한다.
onStart()
✔ 화면 생성 후에 화면에 입력될 값을 초기화하는 용도로 사용한다.
✔ 프래그먼트가 새로 add 되거나 화면에서 사라졌다가 다시 나타나면 onCreateView()는 호출되지 않고 onStart()만 호출된다.
onResume()
✔ onStart()와 같은 용도로 사용된다.
✔ 소멸 주기 메서드가 onPause() 상태에서 멈췄을 때(현재 프래그먼트의 일부가 가려지지 않았을 때)는 onStart()를 거치지 않고 onResume()이 바로 호출된다.
프래그먼트의 소멸 주기 메서드
onPause()
✔ 프래그먼트가 화면에서 사라지면 호출된다.
✔ 동영상 플레이어를 일시정지하거나 현재 작업을 잠시 멈추는 용도로 사용한다.
onStop()
✔ 현재 프래그먼트가 화면에 일부분이라도 보이면 onStop()은 호출되지 않는다.
✔ 만약 add 되는 새로운 프래그먼트가 반투명하면 현재 프래그먼트의 생명 주기 메서드는 onPause() 까지만 호출된다.
✔ 동영상 플레이어를 정지하는 용도로 사용한다.
onDestroyView()
✔ 뷰의 초기화를 해제하는 용도로 사용한다.
onDestroy()
✔ 액티비티에는 아직 남아있지만 프래그먼트 자체는 소멸된다. 모든 자원을 해제한다.
onResume()
✔ 액티비티에서 연결이 해제된다.
'Android > Concept' 카테고리의 다른 글
[Android] [Kotlin] SharedPreferences (0) | 2021.09.19 |
---|---|
[Android] [Kotlin] SQLite (0) | 2021.09.14 |
[Android] [Kotlin] ViewPager (뷰페이저) (0) | 2021.09.13 |
[Android] [Kotlin] 인텐트 (0) | 2021.09.12 |
[Android] [Kotlin] 리사이클러뷰 (0) | 2021.09.01 |