Android의 Activity와 Task에 대한 이해

Android 응용프로그램을 실행할 수 있는 단위인 Activity와 복수 개의 Activity가 모여 구성되는 Task에 대해 이해한 내용을 공유하고자 한다.

- 그림. Android Activity와 Task의 관계 -

Android 응용프로그램은 위 그림에서와 같이 Activity라고 하는 단위로 실행이 가능하다. 한 Activity는 화면 UI와 특정 기능을 수행하는데 예를 들면, 전화를 걸기 위한 Dialer도 하나의 Activity로 작성할 수 있겠다.

Android에서는 자신이 작성한 Activity 혹은, 다른 개발자에 의해 이미 작성되어 있는 Activity를 필요 시 실행하여 이용할 수 있다. (예, Dialer Activity에서 주소록을 검색하기 위해 Contact Activity를 실행). 한 Activity에서 다른 Activity를 실행하기 위해서는 startActivity method에 Intent 인자를 사용하여 호출한다. (자세한 내용은 Android SDK reference 참조)

Android 응용프로그램은 이처럼 하나 혹은 여러개의 Activity로 이루어져 동작을 하는데 여러 Activity간의 동작을 자연스럽게 처리하기 위해 Task라고 하는 개념을 도입하였다.

Task는 위 그림에서 보이듯이 Root Activity (위의 그림에서는 A)를 시작으로 생성된 모든 Activity를 포함하는 것으로 Task Stack을 이용하여 관리한다.
예를 들면, Activty A가 Activty B를 실행하면 (A, B) 처럼 Task Stack에 관리되며 다시 B에서 C Activity를 실행하면 (A, B, C)의 Task Stack을 가지게 된다. 이 때 Stack의 가장 상위에 위치하는 (위 그림의 경우 C)가 현재 Foreground에 화면이 보이는 Activity가 되며 사용자가 BACK키를 선택하면 C가 Stack에서 Pop되고 그 다음 Activity인 B가 Foreground를 차지하게 된다.

위와 같은 동작은 Activity와 Task의 가장 기본적인 동작이며 좀 더 복잡한 경우를 처리하기 위해 별도의 규칙이 적용되는 경우도 있다. 이에 대해서는 나중에 다시 설명해보도록 하겠다.

댓글

이 블로그의 인기 게시물

Wireless: HotSpot 2.0 이란?

Apple M1 Mac Mini에서 이더리움 (Ethereum) 채굴하기

Java: Java for Game? Java가 Game 개발에 어울릴까?