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

[Android/안드로이드] Manifest Activity 태그의 taskAffinity Attribute.

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

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

오늘 살펴볼 Manifest 관련 attribute 는 taskAffinity 입니다.
이 녀석은 Activity Tag 에 속해 있는 속성인데요,
Activity 들의 Task 관리 측면에서 꼭 알아두어야 할 녀석입니다. 

 먼저 Affinity 란 단어가 생소하실 텐데, 영어사전을 찾아보면 "친화력", "친밀감" 이라고 정의되어 있네요.
이 affinity 가 어떤 역할을 하는 녀석인지 developer 를 통해 알아볼까요?

- Activity 가 Affinity ( 친밀감 ) 를 가지는 Task 를 지정한다.

- 같은 taskAffinity 값을 가지고 있는 activity 들은 "개념상" 같은 task 에 속한다.

- 기본적으로 한 application 안의 모든 activity 들은 같은 affinity 를 가지고 있다.

- taskAffinity 의 default value 는 <manifest> 에 정의된 packageName 이다.

- taskAffinity 값은 allowTaskReparenting 속성이나 FLAG_ACTIVITY_NEW_TASK 와 상호작용하여 activity 의 task 를 결정한다. 

 

친숙하게 쓰이는 녀석이 아니라, 이해가 안 갈 수 있어 예제를 준비해 보았습니다.

A App. 과 B App. 이 있습니다.
A app. 의 taskAffinity 는 "com.a.app" 이고 B app. 의 taskAffinity 는 "com.b.app" 이라고 가정해봅시다.

A app 에 새로운 activity 를 추가하면서 이놈의 taskAffinity 를 강제로 "com.b.app" 으로 설정을 했습니다.
자 이제 이 새로운 activity 를 A app. 에서 FLAG_ACTIVITY_NEW_TASK flag 와 함께 startActivity() 하면 어떻게 될까요?

정답을 아시겠어요? 먼저 정답을 생각해보시고, 아래를 펼쳐보세요.


요 녀석만 잘 쓰면 task 에 대한 달인의 길에 한 발짝 다가갔다고 볼 수 있겠네요.
테스트 해보면서 이해하도록 노력해보세요~

그럼~
 




반응형

댓글