안드로이드 엑티비티 생명주기에 대해서 정리를 해보도록 하겠다.
우선, 공식문서에 나온걸 토대로 정리해보고, 실제 코드를 돌려보면서 확인을 해봐야겠다.
엑티비티 콜백은 총 6가지로 구성되어 있다.
포그라운드 : 사용자 눈에 확인되는 상
Activity 생명주기 정리하기
1. onCreate()
어떤 시점: 엑티비티가 처음 생성 될 때 호출되며, 생략할 수 없습니다.
어떤 작업 :
- 전체 생명주기 중에 한번만 실행되고, 기본적인 어플리케이션 시작 로직을 실행합니다.
- 활동의 이전 저장상태가 포함된 savedInstanceStete를 수신합니다. 이번이 처음 생성됐다면 객체의 값은 null입니다.
- 멤버변수 정의, 일부 UI구성등 활동에 관한 기본 설정을 보여준다.
- 새로운 뷰 객체를 생성하고 뷰를 뷰그룹에 넣어서 뷰 계층 구조를 빌드 할 수 있다.
- onCreate() 메서드가 실행을 완료하면 시작됨 상태가 되고, 시스템이 연달아 onStart()와 onResume() 콜백 메서드를 호출하게 됩니다.
- 레이아웃 인플레이트 실행된다. 실제로 뷰 객체로 변환 됨
2. onStart()
어떤 시점: onCreate()가 실행되고 활동상태가 되면 실행됨. 엑비비티가 사용자에서 보이기 전에 호출됩니다. onStart는 다시 화면에 진입할 때 호출
어떤 작업 :
- 화면이 사용자에게 표시되고, 포그라운드에 보내 상호작용할 수 있도록 준비한다.
- 메서드에서 앱이 UI를 관리하는 코드를 초기화 한다.
- 빠르게 실행되며, 완료시 해당 메서드에 머무지 않고 onResume() 콜백 메서드를 호출함
- 다시 내 화면에 진입했을떄 업데이트 해야하는 화면을 노출해야 함// UI업데이트 (애니메이션 같은거 다시 실행해야 하는거 )
3. onResume()
어떤 시점: 액티비티가 전면에 표시되어 사용자와 상호작용이 가능할 때 호출됩니다.
어떤 작업 :
- 앱에서 포커스가 떠날때까지 이 상태에 머무름. 예) 전화오거나, 기기가 꺼지거나 등 포커스가 떠나기 전까지 머무름
- 포커스가 벗어나면 onPause() 메서드가 실행 됨(일시중지)
- onPause() 상태에서 활동이 재개되면 다시 onResume()을 호출함
- onPause() 중에 해제되면 구성요소를 초기화하고, 활동이 재개되었을 때 필요한 다른 초기화 작업 수행해야함.
4. onPause()
어떤 시점: 다른 액티비티가 전면에 나타나면서 현재 액티비티가 일부분 가려질 때 호출됩니다.
어떤 작업 :
- 일시정지 상태. 포그라운드에 있지 않을 때 실행할 필요가 없는 기능을 모두 정지할 수 있음
- 사용자가 필요로 하지 않을 때 배터리 수명에 영향을 미칠 수 있는 모든 리소스 해제(예:GPS)
- onPause()는 아주 잠깐 실행되기 때문에 저장 작업을 실행하기에는 시간이 부족 할 수 있다.
- 데이터를 저장, 네트워크호출 등을 해서는 안됨. 왜? 메서드 실행이 끝나기 전에 완료되지 못할 수 있음
- 부피가 큰 종료작업은 onStop()에서 하면 됨
- 화면이 다시 보여지면 onResume()을 호출함
- 아예 꺼지게 되면 onStop()를 호출함
5. onStop()
어떤 시점: 액티비티가 더 이상 화면에 표시되지 않을 때 호출됩니다.
어떤 작업 :
- 새로 시작된 활동이 화면 전체를 차지할 때 실행됨
- 화면에 보이지 않을 때 실행 할 필요가 없는 기능을 모두 정지 할 수 있음
- 예를들면 앱 애니메이션을 중지하거나, 세밀한 위치 업데이트를 대략적인 위치 업데이트로 전환
- CPU를 비교적 많이 사용하는 것들 위주로 종료작업을 실행해야 함
- 데이터 값을 저장해줄 수 있음
- 활동이 다시 시작되면 onRestart() 메서드를 호출함
- 엑티비티가 아예 실행이 종료되면 onDestory()를 호출함
- 애니메이션 종료, 반복적인 연산 및 메모리를 많이 사용하는 객체
- onRestart()로 다시 갈때 사용했던 값을 저장해주는것이요
- 시스템이 강제종료 되었을 떄 onDestory() 가 안불릴수도 있으니 여기서 다 해제해 줘야함 / 이때는 onCreate()로
6. onDestroy()
어떤 시점: 엑티비티가 아예 실행이 종료될 때 호출됩니다.
어떤 작업 :
- 리소스 해제, 백그라운드 스레드 종료 등과 같이 액티비티의 최종 정리 작업을 수행합니다.
- 실제로 메모리 상에 완전히 제거되었을 때
'기초를 모르면 나가리(코틀린 인 액션)' 카테고리의 다른 글
Fragment 생명주기 정리하기! (1) | 2023.12.03 |
---|---|
인터페이스 작성방법, 상속, 구현 등등 정리 (0) | 2023.11.19 |
코틀린 constructor 주생성자, 부생성자 (1) | 2023.10.27 |
코틀린 기초 람다식 , 람다 프로그래밍 (0) | 2023.10.20 |
코틀린 클래스, 객체, 인터페이스 (0) | 2023.10.17 |