주요 활동으로 목록이있는 앱이 있으며 항목을 클릭하면 해당 항목의 상세보기가 열립니다. 또한 주요 활동과 유사하고 의도 한대로 작동하는 검색 활동이 있습니다.
그러나이 검색 활동이 스택에 인스턴스를 한 번만 포함하여 사용자가 여러 번 검색하고 뒤로 클릭하면 이전 검색 결과로 돌아가는 대신 검색을 시작하기 전에 있던 이전보기로 돌아갑니다.
singleTask 및 singelInstance 시작 모드 모두 내가 원하는 것을 수행하는 것 같아서이 목적을 위해 어떤 것을 사용해야하며 그 이유는 무엇입니까?
답변
Android 개발자 가이드 의 Application Fundamentals 페이지에서 :
기본적으로 애플리케이션의 모든 활동은 서로에 대한 선호도를 갖습니다. 즉, 모두 동일한 작업에 속하도록 선호하는 것이 있습니다.
“singleInstance”활동은 작업에서 유일한 활동으로 단독으로 사용됩니다. 다른 활동을 시작하면 FLAG_ACTIVITY_NEW_TASK가 인 텐트에있는 것처럼 시작 모드에 관계없이 해당 활동이 다른 작업으로 시작됩니다. 다른 모든 측면에서 “singleInstance”모드는 “singleTask”와 동일합니다.
위에서 언급했듯이 “singleTask”또는 “singleInstance”활동의 인스턴스는 하나만 있으므로 해당 인스턴스는 모든 새 인 텐트를 처리 할 것으로 예상됩니다. “singleInstance”활동은 항상 스택의 맨 위에 있으므로 (작업의 유일한 활동이기 때문에) 항상 의도를 처리 할 수있는 위치에 있습니다. 그러나 “singleTask”활동은 스택에서 그 위에 다른 활동이있을 수도 있고 없을 수도 있습니다. 그렇다면 인 텐트를 처리 할 수있는 위치에 있지 않으며 인 텐트가 삭제됩니다. (인 텐트가 삭제 되더라도 그 도착으로 인해 작업이 포 그라운드로 오게되었을 것입니다.
두 시작 모드 중 하나의 활동 인스턴스가 하나만 있기 때문에 뒤로 버튼을 누르면 항상 기존 활동 인스턴스로 이동합니다.
중요한 차이점은 “singleTask”는 무언가가 선택 될 때 실행되는 새 활동에 대해 새 작업을 만들 필요가 없다는 것입니다. 매번 뒤로 버튼에서 새 작업을 제거 할 필요도 없습니다.
활동 스택은 모두 하나의 사용자 “작업”과 관련이 있고 singleInstance가 항상이를 처리하는 데 도움이 될 수있는 복잡한 의도 구조가있는 것처럼 들리지 않으므로 singleTask 시작 모드를 사용하는 것이 좋습니다.
다음은 더 많은 정보와 이미지에 대한 크레딧을 제공하는 좋은 블로그 게시물입니다. Android 활동 및 작업 시리즈 – Android의 UI 구성 요소 모델 소개
답변
간단한 방법으로
singleTask :
시스템은 새 작업을 만들고 새 작업의 루트에서 활동을 인스턴스화합니다. 그러나 활동의 인스턴스가 이미 별도의 작업에있는 경우 시스템 onNewIntent()
은 새 인스턴스를 생성하는 대신 해당 메서드에 대한 호출을 통해 인 텐트를 기존 인스턴스로 라우팅합니다 . 한 번 one instance
에 활동 만 존재할 수 있습니다.
참고 : 활동이 새 작업에서 시작 되더라도 뒤로 단추는 여전히 사용자를 이전 활동으로 되돌립니다.
단일 인스턴스
"singleTask"
시스템 이 인스턴스를 보유하는 작업으로 다른 활동을 시작하지 않는다는 점을 제외하면 과 동일 합니다 . 활동은 항상 해당 작업의 유일한 구성원입니다. 이 작업으로 시작된 모든 활동은 별도의 작업에서 열립니다 .
답변
singleTask
및 singleInstance
활동에만 작업을 시작할 수 있습니다. 항상 활동 스택의 루트에 있습니다. 또한 장치는 한 번에 하나의 활동 인스턴스 만 보유 할 수 있습니다.
더 많은 android : launchMode .