티스토리 뷰
http://developer.android.com/guide/components/tasks-and-back-stack.html
위 내용을 내맘대로 정리
보는사람 음스므로 음슴체
<Tasks and Back Stack>
- application은 여러개의 activity를 가짐
- activity는 다른 app의 activity를 실행시킬수 있음
- 어떤 하나의 job을 수행했을때 사용자와 상호작용하는 activity들의 모임 -> task
- 이 activity들은 back stack이라 불리는 stack에 오픈된 순서대로 배열됨
- home 화면은 대부분의 task의 start 지점이 됨
- 사용자가 app런처 아이콘 또는 홈화면의 shortcut을 클릭해서 실행하면 그 app의 task가 앞으로 나오게 됨
- app의 task가 최근에 사용된 적이 없으면 새 task가 생성되고 그 app의 main activity가 task의 root가 됨
- 현재 앞에 있는 activity A 가 다른 activity B 를 실행시킴
- 실행된 activity B는 stack의 top으로 가고 focus를 가지게 됨
- 이전 activity A는 stack에 남아있게 되고 stop됨
- activity가 stop되면 시스템은 ui 상태를 유지함
- 사용자가 back 버튼을 누르면 stack의 top에 있던 activity B는 pop되고 destroy됨
- 앞에 있던 activity A가 resume되고 ui 상태 복구됨
- task안에 있는 activity들은 결코 재배치 되지 않음
- 오직 stack의 last in, first out의 원칙에 따라 push, pop될뿐임
Figure 1. activity가 back stack에 들어가고 빠지고 하는거
- 사용자가 계속 back 버튼을 누르면 홈 화면에 갈때까지 stack안에 있는 있는 activity들은 차례로 pop됨
- stack에서 모든 activity가 제거되면 task는 더이상 없는게 됨
- task는 결합된 단위임(뭔소린지 모르겠으니 영어원문 : a cohesive unit)
- 사용자가 다른 새 task를 시작하거나 홈으로 가면 기존에 foreground에 있던 task는 background로 옮겨짐
- background에 있는동안 그 task에 있는 모든 activity들은 당근 stop상태
- back stack은 task들을 온전히 유지시킴
- task는 다른 task가 foreground에 있을 동안 단지 포커스를 잃을뿐
Figure 2. 두개의 task - task B는 foreground 에서 사용자랑 샤바샤바 하고 있고 그동안 task A는 background에서 resume되길 기다릴뿐..
- 사용자가 background에 있는 task를 pick up하면 당연 foreground로 옴
- 예를들어
- 현재 3개의 activity를 가진 task A가 있음
- 사용자가 홈버튼을 누르고 다른 app을 실행시킴
- 시스템은 새로 실행된 app의 새 task B를 시작시킴
- 다시 홈으로 와서 task A로 실행되어 있는 app을 실행시킴
- 그럼 당근 task A가 foreground로 옴
- 그러니 task A에 있는 3개의 activity는 stack의 top으로 오고 resume됨 (당연 젤 위에 있는 activity만 resume됨)
- 여기서 사용자는 다시 홈으로 가서 task B의 app 을 시작할수 있음
- 이것이 multi tasking임
- 여기서 한번더 강조 back stack에 있는 activity들은 재배열 될 수 없음 (즉 중간에 있던 activity가 top으로 온다거나 못함)
- 사용자가 한 activity를 실행시키면 새 instance가 생성되고 stack의 top으로 들어감
- app의 activity는 여러 시점에서 instance화 될수 있음 (multiple instances)
- 같은 activity가 각각 여러개의 instance로 생성되서 각각 다른 상태로 stack에 쌓일 수 있음
- 그런데 여러 instance로 되게 하기 싫으면 설정 수정하면됨
Figure 3. 하나의 activity는 여러번 instance화 됨
* activity와 task의 기본 동작 다시 정리
- activity A가 activity B를 실행시키면 activity A는 stop됨
- 시스템은 stop된 activity A의 상태들(스크롤 포지션이라던가 폼에 입력되어있는 text라던가)을 유지함
- activity B가 앞에 있는 상태에서 사용자가 back버튼을 누르면 activity A가 resume됨
- 사용자가 홈 버튼을 눌러서 task를 빠져나오면 수행되고 있던 activity는 stop되고 task는 background로 감
- 시스템은 task내의 모든 activity들의 상태를 유지함
- 사용자가 app런처 아이콘 눌러서 다시 실행시키면 그 app의 task는 resume되고 foreground로 옴
- stack의 top에 있던 activity도 resume됨
- 사용자가 back버튼을 누르면 실행되고 있던 activity는 stack에서 pop되고 destroy됨
- 이전의 activity가 resume됨
- activity가 destroy될때는 시스템은 activity의 상태 저장하지 않음
- activity는 다른 task에서 여러번 instance화 될 수 있음
---------------------------------------------------
Saving Activity State는 넘어감
Managing Tasks랑 나머진 담 포스트에.. 헥헥
- Total
- Today
- Yesterday
- android
- 여행
- 공연
- 일본
- Java
- 서울숲별밤축제
- 신주쿠
- 도쿄
- 사진
- 안드로이드
- 일기
- 노래
- 잡담
- 영화
- 진해
- 드라마
- 포스트크로싱
- 일어일기
- 락
- 음악
- 인디
- 에픽하이
- Linux
- 책
- Mac
- 아사가야
- 야마다 타카유키
- epik high
- 코이데 케이스케
- postcrossing
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |