Android/학습

[Android] 가볍게 시작하는 Android Task

한때미 2026. 5. 30. 23:34

이전에 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에서 새로운 Activity가 추가될 때마다 백 스택에 항목이 추가되는 방식

 

기기의 홈 화면은 대부분의 작업이 시작되는 위치이다.

사용자가 앱 실행하거나 홈 화면에서 앱 또는 바로가기 아이콘을 터치하면 해당 앱의 작업(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: 작업 B는 전경에서 사용자 상호 작용을 받고, 작업 A는 배경에서 재개를 기다린다.

 

이후 Task는 다시 포 그라운드로 돌아와 사용자가 중단했던 부분부터 이어서 작업을 진행할 수 있게 된다. 

 

 

즉, 다른 앱의 Task의 동작은 다음과 같이 상호작용하게 된다.

 

  1. 사용자가 홈 버튼이나 제스처를 사용한 다음 앱 실행기에서 새 앱을 실행한다.
  2. 홈 화면이 나타나면 Task A는 백그라운드로 전환된다.
    새 앱이 실행되면 시스템은 해당 앱에 대한 작업(Task B)을 자체 액티비티(main Activity) 스택과 함께 시작한다.
  3. 해당 앱과 상호 작용한 후 사용자는 다시 홈 화면으로 돌아가서 원래 Task A를 시작했던 앱을 선택한다.
  4. 이제 Task A가 전면(foreground)에 나타난다.
    스택(back stack)과 Activity는 모두 그대로 유지되며, 스택 맨 위에 있는 Activity가 다시 시작된다.

    이 시점에서 사용자는 홈 화면으로 이동하여 해당 작업을 시작한 앱 아이콘을 선택하거나 
    최근 앱 목록에서 해당 앱의 작업을 선택하여 작업 B로 다시 전환할 수도 있다.
참고
여러 작업(Task)을 동시에 백그라운드에서 실행할 수 있다.
그러나 사용자가 백그라운드 작업을 여러 개 동시에 실행하는 경우, 시스템은 메모리 확보를 위해 백그라운드 Acitivity을 종료할 수 있다.
이 경우 Acitivity 상태가 손실된다.

 

Tip. 최근 앱은 Task 목록이라고 볼 수 있는 것이다.

물론 설정에 따라 보이지 않는 task도 존재할 수 있다.

 

 


추가적으로 알아봐야 하는 부분

  • Process와 Task
  • Launch Mode와 Task
  • 같은 앱의 여러 Task

 

참고 자료