문제

안드로이드 개발자 가이드와 인터넷 기사를 읽었지만 여전히 혼란스럽습니다. singleTask launchmode.예를 들어보겠습니다:

사용자가 App1을 실행하면 Android가 새 작업을 시작합니다.App1이 다음 순서로 활동을 생성한다고 가정합니다.

ActivityA -> ActivityB -> ActivityC

task1은 이렇게 생겼습니다.

그런 다음 사용자가 홈 버튼을 클릭하고 App2 실행을 선택하면 task1이 백그라운드로 전환되고 Android가 새 작업을 시작합니다.task2, 사용자가 다음 작업을 수행합니다.

ActivityD -> ActivityE

이제 말하자 ActivityE 시작하려고 ActivityB , 그리고 ActivityB 발사 모드가 있습니다 singleTask.

내가 이해하는 것은 task1이 다시 프런트엔드로 오고 task2가 백그라운드로 간다는 것입니다.task1은 이제 다음과 같습니다.

ActivityA -> ActivityB

이는 다음을 의미합니다.

  1. 그만큼 ActivityC task1에서 제거되고 ActivityB가 최상위 활동이 됩니다.

  2. 이제 사용자가 "뒤로" 버튼을 클릭하면 다음 페이지로 이동합니다. ActivityA task1로 돌아가는 대신 ActivityE 작업2의

내가 맞나요?

감사해요

도움이 되었습니까?

해결책

ActivityC는 task1에서 제거되고 ActivityB는 최상위 활동이 됩니다.

그래 네가 맞아...

ActivityC는 다음에서 제거됩니다.ActivityC의 onDestroy 메소드가 호출됩니다.따라서 사용자가 작업 1을 다시 시작하면 ActivityC 대신 ActivityB가 표시됩니다.

2개의 작업(프로젝트)을 생성하고 동일한 @를 업로드했습니다. SendSpace.사용해 보세요...

안드로이드를 보면 선적 서류 비치 그것은 말한다

""singleTask" 활동을 사용하면 다른 활동이 해당 작업의 일부가 될 수 있습니다.이는 항상 해당 작업의 루트에 있지만 다른 활동(반드시 "표준" 및 "싱글탑" 활동)이 해당 작업으로 시작될 수 있습니다."

즉, 홈 버튼을 클릭하면 단일 작업 활동(귀하의 경우 ActivityB) 위의 모든 활동이 스택에서 제거됩니다.

이전에 제공한 샘플 앱에서 "AndroidTest" 프로젝트를 실행하고 로그에서 홈 버튼을 클릭하면 두 번째 활동이 일시 중지 상태인 것을 볼 수 있으며 "최근 앱"에서 다시 실행하면 이를 볼 수 있습니다. 두 번째 활동이 파괴되었음을 나열하십시오.

단일 인스턴스 활동(ActivityB) 위의 활동이 백 스택에서 제거되지 않고 다른 애플리케이션이 이 활동(ActivityB)을 요청하는 시나리오에서는 해당 활동이 표시되지 않고 의도가 삭제될 수 있습니다.그러나 사용자가 다른 Task\App로 이동하려면 먼저 홈 버튼을 누르고 BackStack에 있는 현재 Task\App을 눌러야 하기 때문에 이런 일이 발생할 가능성은 매우 적습니다.

따라서 경고

다른 모드(singleTask 및 SingleInstance)는 사용자에게 익숙하지 않고 대부분의 다른 애플리케이션과 매우 다른 상호 작용 모델을 생성하므로 대부분의 애플리케이션에 적합하지 않습니다.

이것이 귀하의 의심을 해결하기를 바랍니다.

다른 팁

당신 말이 맞아요.

테스트해보는 건 어떨까요?

실행 모드를 설명하는 데 도움이 되는 다음 앱도 있습니다.

https://play.google.com/store/apps/details?id=com.novoda.demos.activitylaunchmode

enter image description here

출처는 다음과 같습니다. https://github.com/gnorsilva/Activities-LaunchMode-demo

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top