이전에 fragment Manager에 대해 알아보면서 간단하게 백 스택 구조에 대해 알아본 적이 있다.
https://androidhelper.tistory.com/28
[Android] Fragment Manager, Basic 편
일반적으로 운영 애플리케이션 담당 업무를 하게 되면,페이지 이동 같은 작업은 기존에 설계되어 있는 방식 따르면 되었기 때문에이 부분에 대해 신경을 잘 쓰지 않게 되었고, 따로 공부할 계기
androidhelper.tistory.com

이때 간단하게 백 스택에 대해 알아보았는데, 오늘 이 백 스택과 일부 관련된 Task에 대해 한번 가볍게 더 알아보기로 하였다.
ㅎㅎ 사실 담당하는 프로젝트가 다중 task를 생성하는데 이 부분이 꼬인 버그가 발견된 게 계기가 되었..
Task (테스크)
Task는 사용자가 작업을 시도할 때 상호작용하는 Activity의 모음입니다.
사용자가 앱을 사용함에 따라서 여러 Activity가 back Stack에 쌓이게 되는데,
Task는 Activity들의 Back Stack을 관리하는 컨테이너라고 볼 수 있다.
Back Stack과 Task

기기의 홈 화면은 대부분의 작업이 시작되는 위치이다.
사용자가 앱 실행하거나 홈 화면에서 앱 또는 바로가기 아이콘을 터치하면 해당 앱의 작업(Task)이 포그라운드로 전환된다.
해당 앱에 대한 작업(Task)이 존재하지 않으면 새 작업(Task)이 생성되고 해당 앱의 메인 액티비티(main Activity)가 stack의 루트 액티비티(최하단)로 열리게 된다.
현재 액티비티가 다른 액티비티를 시작하면, 새 액티비티가 stack 맨 위에 푸시(push)되고 포커스를 가져오게 된다.
이전 액티비티는 stack에 남아 있지만, 실행이 중지된다.
사용자가 뒤로 가기 버튼을 누르면, 현재 액티비티는 stack 맨 위에서 팝(pop)되어 종료된다.
이전 액티비티가 다시 시작되고, 이전 사용자 인터페이스 상태가 복원된다.
stack에 있는 액티비티는 재배열되지 않고, 현재 액티비티에서 시작되거나 사용자가 뒤로 가기 버튼 또는 제스처를 통해 닫을 때 stack에 추가되거나 stack에서 제거될 뿐이다.
즉, 백 스택(Back Stack)은 후입선출(LIFO) 객체 구조이다.
그리고 사용자가 뒤로 가기 버튼을 계속 탭 하거나 제스처를 취하면 stack에 있는 각 액티비티가 하나씩 제거되어 이전 액티비티가 표시된다.
이러한 과정은 사용자가 홈 화면이나 작업이 시작될 때 실행 중이던 액티비티로 돌아갈 때까지 계속된다.
stack에서 모든 액티비티가 제거되면 해당 작업은 더 이상 존재하지 않게 된다.
Back Stack은 Activity들이 쌓이는 스택 구조이고, Task는 그 Back Stack을 관리하는 작업 단위이다.
Background와 Foreground의 Task
Task는 사용자가 새 작업(Task)을 시작하거나 홈 화면으로 이동할 때 백그라운드로 이동할 수 있는 응집력 있는 단위이다.
백그라운드에 있는 동안 태스크에 포함된 모든 활동은 중지되지만, 태스크의 백 스택은 그대로 유지된다.
다음과 같이 다른 작업(task)이 진행되는 동안 태스크(task)는 포커스를 잃게 된다.

이후 Task는 다시 포 그라운드로 돌아와 사용자가 중단했던 부분부터 이어서 작업을 진행할 수 있게 된다.
즉, 다른 앱의 Task의 동작은 다음과 같이 상호작용하게 된다.
- 사용자가 홈 버튼이나 제스처를 사용한 다음 앱 실행기에서 새 앱을 실행한다.
- 홈 화면이 나타나면 Task A는 백그라운드로 전환된다.
새 앱이 실행되면 시스템은 해당 앱에 대한 작업(Task B)을 자체 액티비티(main Activity) 스택과 함께 시작한다. - 해당 앱과 상호 작용한 후 사용자는 다시 홈 화면으로 돌아가서 원래 Task A를 시작했던 앱을 선택한다.
- 이제 Task A가 전면(foreground)에 나타난다.
스택(back stack)과 Activity는 모두 그대로 유지되며, 스택 맨 위에 있는 Activity가 다시 시작된다.
이 시점에서 사용자는 홈 화면으로 이동하여 해당 작업을 시작한 앱 아이콘을 선택하거나
최근 앱 목록에서 해당 앱의 작업을 선택하여 작업 B로 다시 전환할 수도 있다.
참고
여러 작업(Task)을 동시에 백그라운드에서 실행할 수 있다.
그러나 사용자가 백그라운드 작업을 여러 개 동시에 실행하는 경우, 시스템은 메모리 확보를 위해 백그라운드 Acitivity을 종료할 수 있다.
이 경우 Acitivity 상태가 손실된다.
Tip. 최근 앱은 Task 목록이라고 볼 수 있는 것이다.
물론 설정에 따라 보이지 않는 task도 존재할 수 있다.
추가적으로 알아봐야 하는 부분
- Process와 Task
- Launch Mode와 Task
- 같은 앱의 여러 Task
참고 자료
'Android > 학습' 카테고리의 다른 글
| [Git] Git tag란, 만약 tag된 commit이 merge 된다면? (0) | 2026.05.05 |
|---|---|
| [Android] 실전 예제로 보는 MVP Pattern의 장단점 (0) | 2026.04.12 |
| [Android] Android 16 (target SDK 36) 대응 (0) | 2026.03.14 |
| [Android] targetSdk와 compileSdk의 차이, 그에 따른 영향. (0) | 2026.02.22 |
| [CS] "부동소수점"이란? 컴퓨터에서 소수를 표현하는 방법과 그에 따른 오차 (0) | 2026.02.07 |