# 애플리케이션
- 하나 이상인 여러개의 액티비티들로 구성됨
- 액티비티들은 확장자로 가지는 하나의 파일 안에 저장
- 안드로이드 안에는 많은 애플리케이션들이 내장되어 있음
- 이메일, 달력, 문자, 메시지, 주소록, 카메라, 일정 등이 모두 하나의 애플리케이션
- 안드로이드는 홈 화면에 애플리케이션 구동기를 가지고 있음
- 사용자가 아이콘으로 표시된 애플리케이션을 선택하면 애플리케이션 구동기가 애플리케이션을 시작함
# 액티비티
: 사용자가 어떤 작업을 할 수 있는 화면을 가지고 있는 애플리케이션 구성 요소
- 애플리케이션을 구성하는 빌딩 블록
- 각 액티비티는 사용자 인터페이스가 그려지는 윈도우를 가지고 있음
- 애플리케이션을 작성한다는 것은 결국 액티비티를 하나씩 작성한 후에 하나로 조립하는 것이라고 할 수 있음
- 일단 조립되면 액티비티들은 사용자 인터페이스를 형성하며 작업을 함께함
- 안드로이드에서는 실행의 단위가 애플리케이션이 아니고 액티비티
- 하나의 액티비티에서 다른 액티비티를 시작하려면 startActivity()를 호출
- 안드로이드에서는 심지어 다른 애플리케이션의 액티빝도 시작할 수 있음.

# 태스크
: 어떤 작업을 수행하기 위하여 사용자가 상호작용하는 액티비티들의 그룹
- 스택에 있는 액티비티
- 안드로이드는 두 개의 액티비티를 같은 태스크(task)안에서 유지
- 안드로이드는 다른 애플리케이션의 액티비티도 동일한 태스크 안에서 유지시킴으로써 중간에 끊어짐이 없이 매끄러운 사용자 경험을 제공
# 액티비티 스택
- Back 키를 누르면 현재 액티비티를 제거하고 이전 액티비티로 되돌아 감
- 사용자가 방문한 액티비티들은 어딘가에 기억 -> 이런 용도로 사용되는 것이 백스택 또는 액티비티 스택
- 안드로이드는 새로운 액티비티가 시작될 떄마다 액티비티를 스택에 추가

- 현재 액티비티가 다른 액티비티를 시작하면 이 액티비티가 스택의 맨 위에 삽입됨(push)
- 이전 액티비티는 스택에 머물러 있지만 정지된 상태가 됨
- 스택의 맨 위에 있는 액티비티는 현재 실행되고 있는 액티비티
- 이 액티비티가 사용자의 포커스르 가지고 있음
- 사용자가 BACK키를 누르면 현재 액티비티는 스택에서 제거됨(pop) -> 이전 액티비티가 실행 액티비티로 복귀
- 모든 액티비티들이 스택에서 제거되면 태스크는 더 이상 존재하지 않음

- 스택에 있는 액티비티들은 절대로 위치가 변경되지 않기 때문에 스택에 동일한 액티비티가 이미 존재하더라도 다시 스택의 윗부분에 추가될 수 있음
+ 루트 액티비티
- 애플리케이션이 최근에 실행되지 않아서 애플리케이션을 위한 태스크가 없다면 새로운 태스크가 생성되고 애플리케이션의 메인 액티비티가 스택의 바닥에 추가 됨
# 액티비티와 태스크 기본 동작 정리
- 액티비티 A가 액티비티B를 시작할 때, 액티비티 A는 실행이 중지
하지만 액티비티의 상태는 보존
스크롤 위치나 입력된 텍스트는 유지
사용자가 액티비티 B에서 BACK버튼을 누르면 액티비티 A가 다시 실행됨
- 사용자가 BACK버튼을 누르면 현재의 액티비티는 스택에서 제거되면서 파괴됨 -> pop으로 삭제
스택에 있던 이전 액티비티가 다시 시작됨.
액티비티가 파괴되면 시스템은 액티비티의 상태를 보존하지 않는다. -> 다시 push로 생성해야함
- 액티비티들은 여러 번 객체화될 수 있음
'Programming > Mobile' 카테고리의 다른 글
| [안드로이드스튜디오] 서비스와 방송수신자 (0) | 2021.10.03 |
|---|---|
| [안드로이드스튜디오] 인텐트 (0) | 2021.09.19 |
| [안드로이드스튜디오] 액티비티로부터 결과받기 (0) | 2021.09.12 |
| [안드로이드스튜디오] 여러페이지로 구성된 애플리케이션 작성 (0) | 2021.09.12 |
| [안드로이드스튜디오] 명시적 인텐트 - 두개의 액티비티로 이루어진 애플리케이션 (0) | 2021.09.11 |