2

내 앱이 푸시를 받고 푸시 유형에 따라 다른 활동을 엽니 다.기존 작업의 알림에서 새 활동 시작

보류중인 의도에 TaskStackBuilder을 사용하여 내 매니페스트에 android:parentActivityName과 함께 합성 백 스택을 만듭니다.

지금까지 그렇게 쉽습니다. 앱이 시작되지 않으면 모두 예상대로 작동합니다. 그러나 앱이 배경에있는 경우 (작업이 실행 중) 인 경우 보류중인 Intent는 매니페스트 인 의 정의 된 상위 항목으로 원하는 작업을 시작하지만 기존 작업을 재설정합니다. 문제는 그 동안 사용자가 시작한 다른 활동도 지워진다는 것입니다. enter image description here

그래서 달성하기 위해 찾는이 무엇인지 : 응용 프로그램이 시작되지 않습니다

  1. 경우, 합성 가기 backstack (MainActivity)
  2. 하여 원하는 작업을 열 응용 프로그램이 실행중인 경우, 현재 작업을 존중 주문하고 그 위에 원하는 활동을 누르십시오.

나는 TaskStackBuilder과 작동하지 않을 수 있습니다.

나는 약간 통찰력을 위해 행복 할 것입니다.

답변

1

TaskStackBuilder으로는 실제로이 작업을 수행 할 수 없습니다. 그것을 위해 설계되지 않았습니다. 항상 작업을 다시 시작합니다.

나는 다음을 수행합니다 :

  • Activity을 시작 알림 되세요. TaskStackBuilder을 사용하지 말고 인공 백 스택을 생성하지 마십시오. 이 Activity은 응용 프로그램이 현재 활성화되어있는 경우 응용 프로그램의 현재 작업에서 실행되며 가장 최근의 Activity 열린 맨 위에 놓입니다.
  • 이 새로운 ActivityonCreate()에서이 ActivityisTaskRoot()을 사용하는 작업의 루트인지 확인하십시오. 이 Activity이 작업의 루트이면이 앱을 실행하기 전에 앱이 활성화되지 않았 음을 의미합니다. Activity. 이 경우 TaskStackBuilder을 사용하여 인공 백 스택을 생성하고 원하는 방식대로 다시 시작할 수 있습니다 (작업이 재설정 됨).
+0

내 루트 활동이 시작된 경우 내 싱글턴 활동 도우미에서 플래그를 사용할 수있는 다른 해결책이 생겼습니다. PendingIntent를 만들 때이 플래그를 확인합니다. 그것이 설정 되었다면, 나는'TaskStackBuilder'를 사용하지 않고 일반적인 인 텐트를 사용합니다. 이 예상대로 작동하지만 귀하의 솔루션을 더 우아한 생각합니다. 이제는 일반적인 인 텐트를 통해 실제 타겟으로 라우팅하거나 액티비티 스택을 빌드하는 PushOpenActivity를 사용합니다. 이 솔루션을 사용하는 모든 사용자는 매니 페스트에서 'android : noHistory = "true"를이 활동으로 설정하는 것을 기억하십시오. – JimmyVanBraun

관련 문제