앱 만들기/안드로이드

액티비티 스택 - 플래그 값이 없을때 (기본 설정)

나도 처음이야 2021. 1. 23.

안드로이드 액티비티는 기본적으로 스택 구조를 가진다.

기본적이란 의미는 따로 인텐트 플래그 설정을 하지 않았을때, 즉 기본 설정이란 의미이다.

 

안드로이드 액티비티 스택의 변화 ( 기본 설정 )

 

테스트를 위해 3개의 화면(액티비티) 을 MainActivity, Activity2, Activity3 라고 이름을 지어주고,

동작을 살펴보면 위와 같이 동작한다.

즉, 하나의 화면 위에 다음 화면이 쌓인다. 

Back 동작 시에는 역으로 화면이 하나씩 스택에서 사라진다.

이때는 일반적으로 안드로이드 시스템에 의해 destroy() 함수가 호출되어 진다.

이를 안드로이드 스튜디오 Logcat 에서 확인 해보자.

 

1. MainActivity -> Activity2 -> Activity3 으로 이동 할때.

1
2
3
4
5
6
7
8
 D/test: MainActivity-onPause
 
 D/test: Activity2-onCreate
 D/test: Activity2-onResume
 D/test: Activity2-onPause
 
 D/test: Activity3-onCreate
 D/test: Activity3-onResume
cs

화면이 이동하면서, 위 함수들이 호출되며 스택에 쌓이게 된다.

호출 되어지는 콜백 함수들은 일반적으로 위와 같다.

 

2. Activity3 ->Activity2-> MainActivity 백 동작시

1
2
3
4
5
6
7
8
9
10
D/test: Activity3-onPause
D/test: Activity2-onResume
D/test: Activity3-onDestroy
 
D/test: Activity2-onPause
D/test: MainActivity-onResume
D/test: Activity2-onDestroy
 
D/test: MainActivity-onPause
D/test: MainActivity-onDestroy
cs

백 동작시에는 1번과는 반대로 동작한다.

Activity3 번에서 백 동작시 3번 화면은 Destroy 되면서 스택에서 완전히 사라진다.

Activity 2번은 새로 그려지는 것이 아닌, 이미 스택에 존재하고 있는 Activity 의 onResume() 함수를 실행한다.

 

MainActivity 로의 백키 동작시 2번 화면이 사라지고,

역시 MainActivity 의 onResume() 함수가 호출된다.

 

마지막 백키 동작에 의해서는

앱이 종료된다. 즉, MainActivity 도 스택에서 사라지게 되는 것이다.

 

안드로이드의 기본 액티비티 스택 동작은 위와 같다. 

다음 편에선 주로 사용되는 플래그 동작을 하나씩 살펴본다.

플래그를 사용하는 이유는 바로 개발자가 원하는 화면 전환을 손쉽게 하기 위함이다.

감사합니다 :) 

반응형

댓글