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

[Android/안드로이드] Manifest Activity 태그 속성 allowTaskReparenting.

by 돼지왕 왕돼지 2012. 1. 31.
반응형

안녕하세요 돼지왕왕돼지입니다.

오늘 살펴볼 manifest attribute 는 allowTaskReparenting = "true" | "false" 입니다. 이 녀석은 activity 의 attribute 죠.
이 녀석은 taskAffinity 라는 attribute 와 깊은 관련이 있죠. 


Developer 를 살펴볼까요?

- 새로 시작하는 activity 가 launch 시킨 task 가 아닌, 같은 affinity 를 가진 task 에서 launch 되도록 결정하는 값.

- affinityTask 값은 application 의 package name을 상속하며, allowTaskReparenting 의 default 는 "false" 입니다.

- 보통의 경우는 새로운 launch 되는 activity는 launch 시킨 task의 top에 붙지만,
  이녀석을 true 로 주면 
본래 application task ( affinityTask 값이 같은 )  의 top stack 으로서 launch 됩니다.
  ( 이걸 re-parenting 이라고 부른다. )

- 이 attribute 는 launchMode 의 standard와 singleTop 에만 작용한다.



 이런식으로 써 있네요. 허허. 이해가 가시나요??
 읽고 또 읽으면 못 이해할 것이 없노니.. ( 응?? ㅋ ) 

여기서 용어 정리 한번 해볼까요?
Re-parenting 이란게 무슨 뜻일까요?
Re-parenting 은 한국말로 직역하면, "재부모화" 입니다.
즉, 보통 어떤 activity 가 launch 되면 task stack 의 최상단에 쌓이게 되면서 child 가 되는데,
child 가 자신을 낳아준 부모가 아닌, 다른 부모를 찾아가는.. re (다시) parenting (부모화, 부모지정) 한다는 얘깁죠.


자.. 이해가 안 될  땐 뭐?? 예제죠??

이건 developers 에 나와있는 예제입니다.

 한 유저가 Email 을 읽다가 인터넷 주소 링크가 있어서 클릭을 했습니다.

이 때, allowTaskReparenting 이 false 가 되어있다면, 아래 그림에서처럼 새롭게 띄워진 Web page 는 
E-mail task 의 가장 윗 층을 차지하게 되겠죠. ( 가장 왼쪽 그림 )
 
자! 그럼 allowTaskReparenting 이 true 라면??
'Reparenting' 화살표를 따라, Web browser의 task로 이동하게(Re-parenting) 됩니다.
( Web page activity의 taskAffinity 값은 기본적으로 Web browser application 과 같기 때문이죠. )
 
자 Re-parenting 되었으니, 원래 E-mail Task 에서는 해당 Web page 가 빠져서 결과적으로 E-mail Task는
3번째 그림과 같은 모양이 됩니다. 

즉 re-parenting결과는 2번째 3번째 그림의 상태라고 보시면 됩니다.

 



자 이제 이해가 되시나요??

자 그럼 오늘도 화이팅~ 




반응형

댓글