[ Process & Task ]
ㄴ> 사용자가 현재 화면으로 보고 있는 액티비티가 가장 위쪽에 위치하며 백(Back)버튼을 누르게 되면 보고 있던 액티비티는 스택에서 제거되고 그 아래에 있는 액티비티가 화면에 나타남
Task
: 애플리케이션에서 실행되는 액티비티를 기록하는 스택이며 안드로이드에서 Task를 이용해 화면의 순서와 흐름을 관리할 수 있음
: 스택의 가장 아래에는 기본 액티비티(base activity)가 있으며 주로 홈화면이 이 위치에 놓임
: 어플리케이션의 실행되는 액티비티만을 포함함
Process
: 어플리케이션의 독립적인 실행 단위(흐름)을 말함, 태스크는 안드로이드에서 프로세스와 무관하게 실행되는 액티비티 정보를 저장하는 반면 프로세스는 해당 어플리케이션에 존재하는 모든 실행 코드와 객체를 포함함
ㄴ> 어플리케이션이 실행되면 프로세스와 태스트가 각각 실행됨, 어플리케이션1이 실행되어 Process#1과 Task를 생성했다고 가정, 어떤 기능을 통해 별도의 어플리케이션2를 실행하게 되면 어플2의 프로세스가 실행되고 그 화면(Acitivity#2)에 대한 정보는 호출했던 어플1의 Task에 저장된다.
-> 즉, 액티비티의 인스턴스는 해당 앱 프로세스의 메모리 영역에 생성됨
Activity#2를 열거나 back 버튼을 눌러 액티비티가 전환되면 현재 액티비티에 해당되는 프로세스로 전환됨, 액티비티의 참조가 끝나고 태스크에서 모두 제거될 경우 프로세스도 종료됨
-> 어플2의 액티비티인 Activity#2의 참조가 끝나고 태스크에서 모두 제거될 경우 Process#2도 종료됨
[ Activity Stack ]
: 액티비티를 여러 개 호출 시 스택이 쌓임 -> 스택에서 맨 위에 있는 액티비티가 화면에 보임
: 런치모드는 AndroidManifest.xml에서 설정 (하지만 되도록이면 건들지 않는 것이 좋음)
1. Standard (기본 설정값)
: 후입선출 (LIFO, Last In First Out) / 호출하는 모든 액티비티가 위에 쌓임
ㄴ> 기본적으로 설정되어 있는 모드로 액티비티가 호출될 때마다 태스크에 저장하기 때문에 여러 액티비티가 중첩되어 저장될 수 있음
2. SingleTop
- 가장 위(Top)의 액티비티는 중복해서 쌓이지 않음 / 가장 위의 액티비티가 아니라면 중복 가능
ㄴ> 가장 위(Top)의 액티비티는 중복되어 쌓이지 않으며 top 영역에 Three Activity를 다시 Call 하면 기존 Activity를 재활용하여 호출함 ( onNewIntent() 호출 )
3. SingleTask
- 쌓인 스택은 유지 -> 새로운 스택 생성 -> 새로운 스택에 다른 액티비티 스택 쌓음
ㄴ> 다중 인스턴스 생성이 불가능하며 쌓인 스택은 남고 새로운 스택 공간이 하나 더 생성됨, 새로 생긴 스택 공간은 다른 액티비티 스택에 쌓임 (Three 액티비티 스택 영역에 one, two 액티비티 스택이 쌓임) / 유저의 입장에선 스탠다드와 같음
4. SingleInstance
- 쌓인 스택 유지 -> 새로운 스택 공간 생성 -> 새로 생긴 공간에는 다른 액티비티 스택 X -> 다른 액티비티 호출 시 기존 스택에 쌓임
ㄴ> 쌓인 스택은 남고 새로운 스택 공간이 하나 더 생김 / One, Two 스택이 쌓인 공간에서 Three 액티비티를 Call 한다면 태스크 영역에 Three 영역이 존재하며 한 태스크에는 하나의 SingleInstance 액티비티만 존재 가능
'Android' 카테고리의 다른 글
(Android Studio) - Fragment 데이터 전달 방식 (0) | 2024.04.01 |
---|---|
(Android Studio) - Fragment LifeCycle (0) | 2024.04.01 |
(Android Studio) - Activity 생명 주기 (0) | 2024.03.25 |
(Android Studio) Activity, Intent (1) | 2024.03.22 |
(Android Studio) - margin, padding, gravity 등 (0) | 2024.03.20 |