본문 바로가기

Program/Android

Task or Stack

** 개인적 메모입니다. 태클 사절 **

Task or Stack 기본

Launcher 에서 Shortcut 클릭하거나, All-apps에서 icon 클릭하면

기존에 task 있었을 경우에는 task 불려지고, 아니면 새로 task 만든다. ( default flag )

FLAG_ACTIVITY_NEW_TASK

  존재하는 instance 없을 새로운 task 만들면서 launch 시킨다.

 , 기존에 존재하는 task 중에 같은 affinity 가지고 있다면 그곳으로 액티비티가 되어 들어간다.

 FLAG_ACTIVITY_MULTIPLE_TASK 함께 쓰일 경우는 다른 조건 보지 않고, 무조건 새로운 task 생성
 
  task 새로 시작하는 activity 존재하는 경우는 새로 activity 띄우지 않고, foreground로만 땡겨옴.

 & onNewIntent() intent 들어간다. ( singleTask 같은 효과, 이때 allowTaskReparenting = false겠지.. )

allowTaskReparenting = true 이면 해당 task 붙일 것으로 생각.. result 요구하는 startActivityForResult 실행시킬 때는 줘서는 안된다.

참고android:allowTaskReparenting.

   =  true    affinity 같은 task 이동할 있다.

   =  false   launch 시킨 task 에만 한정된다. ( * default )

  속성은 상속됨.

 이놈은 standard singleTop 국한된다. ( singleTask 해당될 것으로 보이긴 하다... ..? 

android:taskAffinity

  =  affinity . ( default package name )

-FLAG_ACTIVITY_MULTIPLE_TASK

 FLAG_ACTIVITY_NEW_TASK 함께 쓰여서,( must ) 존재하는 task foreground 가져오는 것을 방지한다. new activity 항상 새로운 task 생성과 함께 root 들어간다.

-FLAG_ACTIVITY_BROUGHT_TO_FRONT

 launchMode = "singleTask" system 에서 자동으로 설정해주는 flag. ( 보통 application 설정하지 않는다. )

-FLAG_ACTIVITY_CLEAR_TASK

 반드시 FLAG_ACTIVITY_NEW_TASK 함께 사용되며, 새로운 task 생성하며 root 된다.

 추가적으로 기존 어떤 task 에서 해당 activity 있다면 task clear 한다

- FLAG_ACTIVITY_CLEAR_TOP

 해당 Task 이미 activity 존재한다면, 위에 쌓인 activity 들을 모두 destroy 시키고,

 intent onNewIntent() 전달된다

 ( launch mode single 이거나, FLAG_ACTIVITY_SINGLE_TOP 경우에 )

 launch mode "multiple" 이면서 FLAG_ACTIVITY_SINGLE_TOP 아닐 경우에는 finish -> recreate.

 


출처:

 http://blog.akquinet.de/2010/04/15/android-activites-and-tasks-series-intent-flags/

 FLAG_ACTIVITY_NEW_TASK conjunction 되면 기존에 존재하는 activity foreground 나오며,

root state 만든다.

'Program > Android' 카테고리의 다른 글

Android - Activity Life Cycle  (0) 2011.12.05
Android - WebView & JavaScript  (1) 2011.11.14
굴욕...BaseLayout Custom  (6) 2011.10.29
동적 뷰 추가하기  (2) 2011.10.29
LayoutInflater  (1) 2011.10.29