안드로이드 전체

Android / 작업 및 백 스택 이해

강용민 2021. 8. 16. 22:25

작업은 사용자가 특정 작업을 할 때 상호작용하는 활동의 컬렉션이고, 활동은 스택(백 스택)에 각 활동이 열린 순서대로 정렬된다.

예를 들어 이메일 앱에는 새 메시지 목록을 표시하는 활동이 하나 있을 수 있다.

사용자가 메시지를 선택하면 메시지를 볼 수 있도록 새 활동이 열린다.

새로운 활동은 백 스택에 추가되며, 사용자가 뒤로 버튼을 누르면 새로운 활동이 완료되고 스택에서 팝된다.

사용자가 앱 런처의 아이콘(또는 홈 화면의 바로가기)을 터치하면 앱의 작업이 포그라운드로 나온다.

앱의 작업이 없으면(앱이 최근에 사용된 적이 없으면) 새 작업이 생성되고 이 앱의 '기본'활동이 스택의 루트 활동으로 열린다.

멀티태스킹

현재 활동이 또 다른 활동을 시작하면 새 활동이 스택의 맨 위에 푸시되고 포커스를 갖게 된다.

이전 활동은 스택에 남아있지만 중지된다. 활동이 중지되면 시스템은 활동의 사용자 인터페이스가 갖고 있는 현재 상태를 보존한다.

사용자가 뒤로 버튼을 누르면 현재 활동이 스택의 맨위에서 팝되고(활동이 제거되고) 이전 활동이 다시 시작된다(UI의 이전 상태가 복원됨).

스택의 활동은 다시 정렬되지 않으며 스택에 푸시되고 스택에서 팝될 뿐이다.

현재 활동에 의해 시작될 때 스택으로 푸시되고 사용자가 뒤로 버튼을 사용하여 활동을 떠날 때 스택에서 팝된다.

따라서 백 스택은 'LIFO(후입선출)'객체 구조로 작동된다.

작업의 새로운 각 활동이 백 스택에 항목을 추가하는 방식을 나타낸다. 사용자가 뒤로 버튼을 누르면 현재 활동이 제거되고 이전 활동이 다시 시작된다.

사용자가 계속 뒤로 버튼을 누르면 사용자가 홈 화면으로(또는 작업이 시작될 때 실행 중이었던 활동으로)돌아갈 때까지 스택의 각 활동이 스택에서 팝되어 바로 이전 활동이 나타난다. 모든 활동이 스택에서 삭재되면 작업이 더 이상 존재하지 않는다.

 

사용자가 새 작업을 시작하거나 홈버튼을 통해 홈 화면으로 이동할 때 작업은 '백그라운드'로 이동할 수 있는 응집단위이다.

작업의 모든 활동은 백그라운드에 있는 동안 중지되지만 작업의 백 스택은 온전하게 그대로 유지된다.

그림 2.작업 B가 포그라운드에서 사용자 상호작용을 수신하는 동안 작업 A는 백그라운드에서 다시 시작되기를 기다리고 있다.

이와 같은 작업은 또 다른 작업이 실행되는 동안 포커스를 잃을 뿐이다.

이후에 작업이 '포그라운드'로 돌아갈 수 있으므로 사용자는 중단된 활동을 계속 이어나갈 수 있다.

 

예를 들어 현재 작업(Task A)의 스택에 세 개의 활동이 있고 현재 활동으로 두 개가 있다고 가정해본다.

사용자가 홈 버튼을 누른 후 앱 런처에서 새 앱을 시작하면, 홈 화면이 표시될 때 작업 A는 백그라운드로 전환된다.

새 앱이 시작될 때 시스템은 앱의 작업(Task B)을 시작하며 작업에는 자체 활동 스택이 있다. 사용자가 앱과 상호작용한 후 다시 홈으로 돌아가서 원래 작업 A를 시작한 앱을 선택하면, 작업 A가 포그라운드로 나온다.

스택의 세 활동은 모두 그대로 유지되며 스택의 맨 위에 있는 활동이 다시 시작되는 것이다.

또한 이 시점에서 사용자는 작업 B로 다시 전환할 수 있다. 즉, 홈으로 이동하여 이 작업을 시작한 앱 아이콘을 선택하여(또는 최근 화면에서 앱의 작업을 선택하여) 전환할 수 있다.

'안드로이드 전체' 카테고리의 다른 글

Android 스튜디오 소개 - 1  (0) 2021.08.16
2.Intent  (0) 2021.08.15
안드로이드 컴포넌트  (0) 2021.08.06
안드로이드 컴포넌트-Activity  (0) 2021.08.06
1.안드로이드 컴포넌트 4가지  (0) 2021.08.04