개요
안드로이드 Activity의 launchMode
에 대해 공부하던 중에 process
와 task
개념을 확실하게 하기 위해 포스팅을 작성한다.
Process? Task?
안드로이드 애플리케이션을 실행하면 Process가 생성된다. 이 Process는 애플리케이션마다 별도로 생성되며, 애플리케이션이 종료될 때 Process도 종료된다.
그렇다면 Task는 언제 생성될까? Task는 현재 생성된 Task가 없을 때에 생성되고, 이미 생성된 Task가 있다면 그 Task에 Activity 정보를 저장한다.
Process
- 애플리케이션의 독립적인 실행 단위
Task
- 프로세스와 무관하게 실행되는 액티비티의 정보를 저장하는 공간
Task에 Activity 정보를 언제 저장하는데?
예를 들어 보자. 메신저 앱에서 친구에게 사진을 보내고 싶을 때 우리는 '앨범’에서 사진을 선택하여 전송한다. 이때, 앨범 앱이 올라왔다가 내려가게 되는데 이 상황을 Task 기준으로 그림을 그려 보면 다음과 같다.
-
메신저 앱이 띄워진 상태
-
‘사진 첨부’ 버튼을 눌러 앨범을 띄운 상태
-
사진을 선택하고 ‘확인’ 버튼을 눌러 메신저 앱에 돌아간 상태
-
사진을 다 보내고 애플리케이션을 종료하여 런처(홈 화면)로 돌아간 상태
화면에 보이는 Activity에 따라 Task에 저장된 Activity 정보가 달라지는 것을 볼 수 있다. 단, Task에 저장된 것이 ‘Activity’ 가 아닌 'Activity 정보’임을 유의해야 한다.