본문 바로가기
프로그래밍 놀이터/안드로이드, Java

[Android/안드로이드] Task & Back Stack.

by 돼지왕 왕돼지 2012. 5. 21.
반응형



http://developer.android.com/guide/topics/fundamentals/tasks-and-back-stack.html
 

manifest 에 Activity B 를 정의할 때  launch 모드를 함께 정의했고, Activity A 가 B 를 call 할 때 다른 launch mode 를 준다면(launch mode 와 관련된 flag 를 준다면) call 하는 intent option 이 우선한다. 
Manifest 에는 기술할 수 있지만, flag 로는 설정 못하는 option 도 있고, 반대로 몇개는 flag 로는 설정될 수 있지만, manifest 에서는 설정 안 되는 것들도 있다.

- singleTop 인 Activity 가 Stack 의 Top 에 위치해있을 때, Intent 를 새로 받으면 onNewIntent() 를 받는다. onNewIntent() 가 처리될 때까지 BackKey 를 통해 activity state 가 관리되지 않는다.

- singleTask 인 Activity 는 전 Back stack 에 한개의 instance 만 갖는다. 만약 새롭게 만들어진다면, 새로운 Back Stack 을 만들면서 생성되지만, 기존에 다른 stack 에 존재한다면, 그 instance 의 onNewIntent() 를 호출하고, 새로 생성되지는 않는다.

- singleInstance 는 singleTask 처럼 하나의 instance 를 갖고, 새로운 stack 에 생성되며, instance 가 기 존재한다면, 해당 instance 의 onNewIntent() 를 부른다. 하지만, 이 녀석은 BackStack 에서 유일하게 존재하는 녀석이고, 이 녀석이 부르는 Activity 는 무조건 새로운 Stack 에서 시작한다.

- FLAG_ACTIVITY_NEW_TASK : activity 를 새로운 task 에 만든다. 만약 instance 가 이미 존재한다면, 해당 task 가 foreground 에 나오고, last state 가 복구되면서 activity 는 onNewIntent() 를 받는다. singleTask 와 같은 동작이다.

- FLAG_ACTIVITY_CLEAR_TOP : 만약 activity start 하는 stack 에 instance 가 기 존재한다면, instance 위쪽 stack 을 모두 destroy 해버리고, 기존에 있던 instance 의 onNewIntent 가 불린다. 이 CLEAR_TOP 은 보통 NEW_TASK 와 같이 쓰인다.

- affinity 는 activity 가 어디에 귀속되어야 하는지를 나타내는 attribute. allowTaskReparenting attribute 와 함께 써야 한다.

- FLAG_ACTIVITY_NEW_TASK 는 주로 외부에서 activity 를 start 할 때 쓰인다.



반응형

댓글