2017-10-14 7 views
0

내 활동 매니페스트 파일에 있습니다이미 매니페스트에 Intent.FLAG_ACTIVITY_NEW_TASK 중복 설정되어 있습니까?

android:launchMode="singleTask" 

를 지금은 내 코드와 사용에서이 활동을 시작하는 경우 :

intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 

이 중복인가?

무엇이 플래그 접촉이 중복은

Intent.FLAG_ACTIVITY_SINGLE_TOP 

인가?

감사합니다.

+0

여분을 말하면 무엇을 의미합니까? "singleTask"가 덮어 쓰여지는지 여부를 알아야합니까? – azizbekian

+0

중복으로는 매니페스트에 이미 정의되어있어 아무 것도 변경하지 않으므로 필요하지 않습니다. 변수를 같은 값으로 두 번 연속 설정하면 마찬가지입니다. 두 번째 시간은 중복됩니다. – Chris

답변

0

는 singleTask 1.about 안드로이드 디바이스 가이드의 Application Fundamentals 페이지에서

:

는 기본적으로 응용 프로그램의 모든 활동이 다른 각 에 대한 친화력을 가지고는 - 즉 그들 모두가 동일한 작업에 속하기 위해 선호도가 입니다.

"singleInstance"활동은 만이 작업의 유일한 활동으로 표시됩니다. 또 다른 활동을 시작하면, 그 활동에 관계없이 발사 모드의 다른 작업으로 시작됩니다 - FLAG_ACTIVITY_NEW_TASK가 의도에 것처럼. 다른 모든면에서 "singleInstance"모드는 "singleTask"와 동일합니다.

으로는 인스턴스가 모든 새로운 의도를 처리 할 것으로 예상된다 있도록 "singleTask"또는 "singleInstance"활동 결코 더 보다 인스턴스가,있다, 위에서 언급 한. "singleInstance"활동 은 항상 스택 상단에 있습니다 ( 작업에있는 유일한 활동이기 때문에). 따라서 항상 의 인 텐트를 처리 할 수 ​​있습니다. 그러나 "singleTask"활동은 스택에서 위에 다른 활동이 있거나 없을 수 있습니다. 그렇다면 포지션을 처리 할 위치에없고 의도가 삭제됩니다. 합니다 ( 의도가 삭제하더라도, 그것의 도착 는 작업이 남아있는 것 전경에 와서 발생하는 것입니다.)

중 출시와 함께 활동의 하나 개 이상의 인스턴스가 결코 없기 때문에 모드에서 뒤로 단추는 항상 사용자 활동의 기존 인스턴스로 이동합니다.

중요한 차이점은 "singleTask"는 무언가가 선택되었을 때 실행되는 새로운 활동에 대해 새 작업을 만들 필요가 없다는 것입니다. 또한 매번 뒤로 버튼에서 새 작업을 제거해야합니다.

Activity 스택은 모두 한 명의 사용자 "작업"과 관련이 있으며, 항상 단일 인스턴스를 처리하는 데 도움이되는 복잡한 Intent 구조를 가지고있는 것처럼 들리지 않으므로 singleTask 실행 모드를 사용하는 것이 좋습니다. 여기

뿐만 아니라 이미지 적립으로 더 많은 정보를 원하시면 좋은 블로그 게시물입니다 : Android Activities and Tasks series – An introduction to Android’s UI component model

2.about singleTop

singleTop 모드 활동 부팅의 인스턴스가 이미 존재하는 경우 작업 스택 스택 맨 위로 이동 한 다음 새 인스턴스가 만들어지지 않을 때 작업을 다시 시작합니다.이 경우 스택 맨 위 재사용을 수행하고 onNewIntent() 메서드의 인스턴스를 호출하여 인 텐트 객체를이 인스턴스로 전달합니다. 예를 들어 A singleTop의 시작 모드 인 경우 A가 스택 맨 위에 이미 존재하고 A가 시작될 때 startActivity (New Intent (this, A.class))을 호출하면 A 인스턴스가 다시 만들어지지 않고 원본 예제를 다시 사용하고 원본을 호출합니다 onNewIntent (method)의 인스턴스 이것은이 작업 스택 또는 A의 예입니다. singleTop 모드 작업이 이미 존재하고 작업 스택이 있지만 스택 맨 위에없는 경우 해당 동작 및 표준 패턴이 동일하고 여러 인스턴스가 만들어집니다. 당신은 중복되지 않습니다 understand-android-activity-launchmode

편집

볼 수 있습니다.

이러한 활동을 열어 사용자를 기록하기 위해 이러한 활동의 ​​순서를 기록하고 Google은 작업 스택 개념을 도입하여 사용자 만족도를 유지합니다.

활동의 실행 모드가 작업 스택에 영향을 줄 수 있으며 Intent 플래그가 작업 스택에도 영향을 미칠 수 있습니다.

매니페스트 파일에서 태스크 스택 패턴을 수정하지 않고 코드에서 태스크 스택 패턴을 수정할 수 있으며 플래그가 태스크 스택에 직접 영향을 미칠 수 있습니다.

android:text="content" (XML 코드) 및 tv.setText("content");은 (는) 자바 코드에 있습니다.

+1

나는 내 질문에 답하고 있다고 생각하지 않는다. singleTop, singleInstance ...가하는 것은 이미 문서에서 설명하고 있습니다. 내 질문에 대답하고 singleInstance에 대해 이야기 할 수 있습니까? – Chris