안드로이드에서 화면이 아닌 액티비티 자체가 어떤 원리로 수행되는지 살펴보자.
액티비티 실행 주체는 "안드로이드 시스템"이므로 시스템에서 액티비티 생명주기를 어떻게 관리하며,
그때 개발자 코드에서 신경 써야 하는 부분은 무엇인지 알아본다.
액티비티 생명주기란?
⇒ 사용자가 앱을 탐색하고, 앱에서 나가고, 앱으로 다시 돌아가면, 앱의 Activity 인스턴스는 수명 주기 안에서 서로 다른 상태를 통해 전환된다. Activity 클래스는 활동이 상태 변화를 알아차릴 수 있는 여러 콜백을 제공한다. 그렇기에 안드로이드 생명주기를 액티비티 생명주기라 지칭하며, 이는 액티비티가 생성되고 정지되고 재생되고 종료되는 등의 상태 변화와 그에 따른 콜백 메서드를 총칭한다.
액티비티 상태
- 활성 상태(activity running)
현재 액티비티가 화면을 점유하여 출력되고 있으며 사용자 이벤트 처리가 정상으로 처리되는 상태 - 일시 정지 상태(pause)
현재 액티비티가 일시적으로 사용이 불가능한 상태 - 비활성 상태(stop)
현재 액티비티가 다른 액티비티로 인해 화면이 완벽하게 가려진 상태
생명주기 호출 메서드 종류
onCreate()
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setConentView(R.layout.activity_main);
}
액티비티가 최초로 생성되었을 때 호출된다.
액티비티에 필요한 리소스를 초기화(정적 설정)한다.
onReStart()
액티비티가 onStop 되었다가 화면에 다시 보여질 때 호출된다.
onStart()
액티비티가 사용자에게 표시되기 직전에 호출된다.
사용자에게 UI가 보여지기 위해 액티비티를 포그라운드로 보내 사용자와 상호작용을 할 준비를 한다.
해당 콜백 메서드는 매우 빠르게 진행된다.
onResume()
포그라운드에서 액티비티와 사용자가 상호작용한다.
사용자에 의해 기존 onCreate() 메서드에서 정의한 이벤트 처리가 실직적으로 쓰인다.
onPause()
사용자가 현재 액티비티를 떠날 때 첫 신호로 시스템에 의해 호출된다.
화면상에는 보이지만 focusing을 잃어버려 포그라운드에 띄어진 액티비티가 백그라운드로 내려온다.
onStop()
화면이 완전히 새로운 액티비티로 전환하여 기존 화면이 보이지 않을 때 호출된다.
onDestroy()
액티비티가 완전히 소멸되기 직전에 호출된다.
생명주기 호출 메서드 전환 예제
1. 화면 가로/세로로 회전했을 때
- 기존 액티비티
onPause() -> onSaveInstanceState() -> onStop() -> onDestroy() - 회전된 액티비티
onCreate() -> onStart() -> onRestoreInstanceState() -> onResume()
2. 액티비티 재시작했을 때
onStop() -> onRestart() -> onStart() -> onResume()
3. 홈버튼 클릭했을 때
onPause() -> onStop()
4. 백버튼 클릭했을 때
onPause() -> onStop() -> onDestroy()
© 참고
https://ifcontinue.tistory.com/11
https://huiveloper.tistory.com/2
https://github.com/kkangseongyun/kkangs_android
GitHub - kkangseongyun/kkangs_android
Contribute to kkangseongyun/kkangs_android development by creating an account on GitHub.
github.com
'Android > study' 카테고리의 다른 글
[Android] 안드로이드 이벤트 (0) | 2021.09.07 |
---|---|
[Android] 인텐트의 정의와 종류 (+ 플래그) (0) | 2021.09.02 |
[Android] 매니페스트 파일 (AndroidManifest.xml) 분석 (0) | 2021.09.02 |
[Android] 안드로이드 레이아웃과 속성 (0) | 2021.08.08 |
[Android] 안드로이드의 특징과 4대 컴포넌트 (2) | 2021.08.05 |