우선, 오랫동안 그 작업을 사용하지 않을 때 시스템이 활동 B를 죽이지 않도록하십시오.
사용자가 장기간 작업을 떠날 경우 시스템은 루트 활동을 제외한 모든 활동의 작업을 지 웁니다. 사용자가 태스크로 다시 돌아 오면 루트 활동 만 복원됩니다. 시간이 지나면 사용자는 이전에 수행 한 작업을 포기하고 새로운 작업을 시작하기 위해 작업으로 복귀하기 때문에 시스템은 이러한 방식으로 작동합니다. 이 속성 태스크의 루트 액티비티에 "true"로 설정되어있는 경우, 방금 설명한 기본 동작이 발생하지 않습니다
alwaysRetainTaskState
:
어떤 활동이이 동작을 수정하는 데 사용할 수있는 속성이 있습니다. 이 태스크는 오랜 기간이 지난 후에도 스택의 모든 활동을 유지합니다. 따라서해야 할 일은 A에 대한 매니페스트 파일의 <activity>
태그 아래에서이 값을 true로 설정하는 것입니다.
두 번째로 singleTop
은 필요하지 않습니다. Android 문서의 figure을 확인하십시오. 나는 이것이 당신이 원하는 것이라고 생각합니다. singleTask
실행 모드를 지정하는 활동을 시작하면 해당 활동의 인스턴스가 i 그라운드 타스크에 존재하면 그 전체 타스크가 포 그라운드로 이동됩니다. 이 시점에서 백 스택에는 스택의 맨 위에 앞으로 가져온 작업의 모든 활동이 포함됩니다.
singleTop
대신 A 및 B 태그 아래에 singleTask
을 추가해야합니다. 그런 다음 플래그없이 FLAG_ACTIVITY_NEW_TASK
및 FLAG_ACTIVITY_REORDER_TO_FRONT
(선택 사항)을 제외한 알림에서 활동 A를 시작해야합니다.
본인 스스로 시도하지는 않았지만 효과가 있다는 강한 믿음이 있습니다. 시도해보고 그렇지 않은 경우 알려주십시오.