반응형
들어가기 전..
Activity는 UI와 밀접한 관련을 가지고 있는 컴포넌트로 앱에 있어 기본이 되는 구성요소이다.
액티비티는 생명주기를 갖는데 이 순서에 따라 메소드가 호출되므로 숙지할 필요가 있다.
생명주기 순서는 하단의 블로그를 참고하여 정리하였다.
Android Activity Lifecycle
1. onCreate()
- 화면 정의하는 용도로 많이 사용
- onCreate()는 콜백 메소드이며 Activity가 생성될 때 한번 실행되는 메소드이다.
- 'savedInstanceState'라는 파라미터를 수신하며 이 파라메터는 Activity의 이전 상태를 저장한 'Bundle'객체입니다.
- Activity가 처음 생성된 경우에 savedInstancdState는 null 상태이다.
- 생성단계에서 onCreate()안에서 setContentView()에 레이아웃을 전달하여 화면을 정의한다.
2. onStart()
- Activity가 사용자에게 보이기 시작하는 단계
- 백그라운드가 아닌 포그라운드로 나와 사용자와 상호작용을 준비하는 단계.
- 아직 사용자와 상호작용은 불가능
3. onResume()
- 사용자와 상호작용하는 단계
- Activity 스택의 Top에 위치
- 주로 어플 기능이 onResume()에 설정됨
- Activity에서 포커스가 없어질 때까지 이상태가 지속됨
- 포커스가 사라지면 Activity가 일시중지 상태가 된다.
- Activity가 일시중지 상태가 되면 onPause() 메소드가 호출된다.
- 일시중지 상태에서 다시 Activity가 활성화 되면 onResume()이 호출된다.
- onResume()이 호출되면 Activity가 재개될때 필요한 초기화 작업을 수행
4. onPause()
- Activity 스택의 최상위에 있던 Activity에서 focus가 사라질때 호출. (ex. 전화 온 경우. 다른 화면으로 잠시 이동)
- background에 Activity가 위치
- 멀티 윈도우 모드에서는 Activity가 백그라운드에 위치해도 화면에는 보일 수 있다.
- Activity가 백그라운드에 있을 때 필요치 않은 기능을 해제하는데 사용할 수 있다.
- 이벤트 수행 전에 끝나는 경우가 생기기 때문에 지속시간이 짧다.
- 데이터 저장 또는 호출 같은 트랜잭션은 사용하지 않는다.
- onStop() 이나 onResume() 상태로 전환
- 실행 시간이 긴 이벤트는 Activity가 멈춘 onStop() 메소드에서 사용한다.
5. onStop()
- Activity가 사용자에게 보이지 않는 단계
- 일시중지(ON_PAUSE) 상태의 Activity가 완전히 중지됐을 때 호출됨. ex) 다른 Activity가 새로 시작되어 화면을 차지한 경우 , Activity 작동이 완료되어 화면에서 사라진 경우
- Activity가 중지됐을 때 필요없는 자원을 해제시키거나 조정한다.
- 부하가 큰 작업을 하기에 적당하다. ex) 데이터 처리와 관련된 트랜잭션
- onDestroy() 나 onRestart() 상태로 전환 가능
6. onDestroy()
- Activity가 호출하는 마지막 메소드
- Activity가 소멸되기 직전에 호출. ex) Activity를 완전히 닫거나 Activity에서 finish() 메소드를 호출한 경우
- Activity가 소멸될때 ViewModel 객체를 이용하면 Activity의 뷰 데이터를 보관할 수 있다.
- ViewModel에 저장된 뷰 데이터는 화면 회전 등으로 뷰 데이터를 그대로 사용할 경우 유용하다.
- 화면 회전 등의 구성 변경으로 Activity가 종료된 경우에는 바로 새로운 Activity가 onCreate()된다.
- Activity에 있는 데이터를 더 이상 쓰지 않는다면 onDestroy 단계에서 모두 정리해줘야 한다.
반응형
'Android' 카테고리의 다른 글
[Android] startActivityForResult() onActivityResult() (0) | 2021.10.26 |
---|---|
[Android] AVD Galaxy 스킨 추가하기 (0) | 2021.10.26 |
[Android Studio] 릴리즈 키 해시(Key Hash) 등록 및 release APK 빌드 (0) | 2021.06.28 |
[Device] Android fastboot 모드 탈출하기 (1) | 2021.06.10 |
[Device] Samsung S6 Lite 펌웨어 교체 및 강제부팅 (0) | 2021.06.03 |