[Android] Process VS Task

개요

안드로이드 Activity의 launchMode 에 대해 공부하던 중에 processtask 개념을 확실하게 하기 위해 포스팅을 작성한다.


Process? Task?

안드로이드 애플리케이션을 실행하면 Process가 생성된다. 이 Process는 애플리케이션마다 별도로 생성되며, 애플리케이션이 종료될 때 Process도 종료된다.

그렇다면 Task는 언제 생성될까? Task는 현재 생성된 Task가 없을 때에 생성되고, 이미 생성된 Task가 있다면 그 Task에 Activity 정보를 저장한다.

  • Process
    • 애플리케이션의 독립적인 실행 단위
  • Task
    • 프로세스와 무관하게 실행되는 액티비티의 정보를 저장하는 공간

Task에 Activity 정보를 언제 저장하는데?

예를 들어 보자. 메신저 앱에서 친구에게 사진을 보내고 싶을 때 우리는 '앨범’에서 사진을 선택하여 전송한다. 이때, 앨범 앱이 올라왔다가 내려가게 되는데 이 상황을 Task 기준으로 그림을 그려 보면 다음과 같다.

  1. 메신저 앱이 띄워진 상태

  2. ‘사진 첨부’ 버튼을 눌러 앨범을 띄운 상태

  3. 사진을 선택하고 ‘확인’ 버튼을 눌러 메신저 앱에 돌아간 상태

  4. 사진을 다 보내고 애플리케이션을 종료하여 런처(홈 화면)로 돌아간 상태

화면에 보이는 Activity에 따라 Task에 저장된 Activity 정보가 달라지는 것을 볼 수 있다. 단, Task에 저장된 것이 ‘Activity’ 가 아닌 'Activity 정보’임을 유의해야 한다.


Share