Android 작업 선호도 설명


104

속성은 정확히 무엇에 taskAffinity사용됩니까? 나는 문서를 읽었 지만 많이 이해할 수 없었습니다.

누구든지 평신도 용어로 작업 친 화성을 설명 할 수 있습니까?


1
여기에 예제와 함께 아주 좋은 설명입니다 : slideshare.net/RanNachmany/...
user1269737은

나는이 대답이 생각하는 최고의 : stackoverflow.com/a/21383301/1318946
Pratik Butani

답변:


160

Android Task Affinity는 무엇에 사용 되나요?

Android 애플리케이션에는 카드 데크와 같은 스택을 형성하는 활동이 있습니다. Android 애플리케이션을 시작하고 5 개의 활동 A, B, C, D, E를 시작하는 경우. 그들은 스택을 형성합니다

E   - chat view
D   - weather screen
C   - map view
B   - weather screen
A   - login screen

E는 시작된 마지막 활동이며 표시 중입니다. E를 닫으면 D가 표시됩니다. D를 닫으면 C가 표시됩니다. 기타

활동 BD동일한 활동입니다. 사용자가을 일부 수정 D weather screen한 다음 활동을 종료하기로 결정한 다음C Map view ?

그런 다음 사용자는 날씨 화면으로 돌아 왔고 레벨에서 변경 한 내용이 레벨 D weather screen에 저장되지 않았기 때문에 사용자는 불만족 스러울 것 B weather screen입니다. 동일한 활동이지만 해당 활동의 다른 상태입니다.

사용자는 5 계층의 활동 스택을 가지고 있었고 그 중 2 개는 동일한 활동이었습니다. 스택에서 5 개를 모두 꺼내면 동일한 활동의 ​​서로 다른 두 버전과 상호 작용하는 현상이 발생하고 매우 혼란 스러울 수 있습니다.

사용자는 일반적으로 엄격한 활동 스택의 관점에서 생각하지 않습니다. 그들은 "오, 날씨보기를 변경하겠습니다"라고 생각하고지도보기로 돌아가고 싶어합니다. 그런 다음 로그인 화면으로 돌아 가기를 원하므로 다시 백업하십시오. 왜 B weather app표시되고 레벨에서 설정을 저장하지 않았 D습니까?

프로그래머는 활동 BD상태에 링크 된 경우 약간의 혼란을 완화 할 수 있습니다 . 그런 식으로 하나가 바뀌면 다른 하나가 바뀝니다. 사용자가 새 날씨 화면을 열 때마다 날씨 화면의 단일 인스턴스가 비밀리에 열립니다.

이러한 상황에서 활동의 taskAffinity를 변경하는 것이 바람직 할 수 있습니다. 사용자는 레벨 D를 변경합니다. 그런 다음 레벨 B로 돌아갑니다. 그리고 B에서 D에 대한 변경 사항을 확인합니다.

이 프로그램은 백업 할 수있는 스택을 유지합니다. 좋은 점은 사용자가 임의의 장소에서 동일한 활동의 ​​X 인스턴스를 열면 모두 하나입니다.

자세한 설명이 포함 된 슬라이드 쇼 : http://www.slideshare.net/RanNachmany/manipulating-android-tasks-and-back-stack


13
를 사용하는 singleInstance대신 사용하면 taskAffinity어떻습니까?
hguser

5
경우 위의 설명에서, 나는 텐트 호출 활동 D에 플래그로 Intent.FLAG_ACTIVITY_REORDER_TO_FRONT를 사용하여 선호하는 것,이 모든 다른 사람의 위에 활동 B를 가져오고 그것의 하나의 인스턴스 만 유지하는 것
EyalBellisha

63
사실,이 대답은 거의에 접촉하지 taskAffinity전혀 :-( 설명이 모호 논문의 답변이 너무 많은 upvotes을 얻을 놀라운 것을..
데이비드 WASSER

5
너무 긴 대답이지만 여전히 간단한 사실 taskAffinity은 언급하지 않습니다 . 활동이 실행되기를 선호하는 작업의 이름을 지정하는 데 사용됩니다. Intent에 플래그 가 포함 되면 FLAG_ACTIVITY_NEW_TASK활동이이 특정 작업 (으로 정의 됨 taskAffinity)에 배치됩니다.
Stan Mots

2
Although it's the same activity, it's a different STATE of that activity."그것은 그 활동 의 또 다른 사례 입니다." 라고 말할 것 입니다.
Maksim Dmitriev

6

선호도는 활동이 속한 작업을 나타냅니다.

친화력은 두 가지 상황에서 작용합니다.

활동을 시작하는 인 텐트에 FLAG_ACTIVITY_NEW_TASK 플래그가 포함 된 경우.

활동의 allowTaskReparenting 속성이 "true"로 설정된 경우.

http://developer.android.com/guide/components/tasks-and-back-stack.html을 참조 하십시오.


26
developer.android.com에서 복사 해 주셔서 감사합니다
Anirban

이것은 아무것도 설명하지 않습니다. 실제로는 무엇을 의미합니까?
James Andrews

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.