홈 화면에서 직접 앱을 시작할 때와 공유 의도를 통해 다른 앱에서 앱을 시작할 때의 두 컨텍스트의 차이를 볼 수 있습니다.
@CommonSenseCode가 언급 한 "비표준 백 스택 동작"의 의미에 대한 실제 예는 다음과 같습니다.
서로 통신하는 두 개의 앱 App1 과 App2 가 있다고 가정하십시오 .
시작 앱 2 : MainActivity 런처에서. 그런 다음 MainActivity에서 App2 : SecondaryActivity를 시작하십시오 . 활동 컨텍스트 또는 응용 프로그램 컨텍스트를 사용하면 두 활동이 모두 동일한 작업에 있으며 정상입니다 (모든 표준 시작 모드 및 의도 플래그를 사용하는 경우). 뒤로 누름으로 MainActivity로 돌아갈 수 있으며 최근 앱에는 하나의 작업 만 있습니다.
이제 App1에 있고 공유 의도 (ACTION_SEND 또는 ACTION_SEND_MULTIPLE)로 App2 : MainActivity 를 시작 한다고 가정 합니다. 그런 다음 App2 : SecondaryActivity 를 시작하십시오 (항상 모든 표준 실행 모드 및 인 텐트 플래그가 있음). 일어나는 일은 :
Android <10에서 애플리케이션 컨텍스트로 App2 : SecondaryActivity를 시작 하면 동일한 작업 에서 모든 활동을 시작할 수 없습니다 . 나는 안드로이드 7과 8을 사용해 보았고 SecondaryActivity는 항상 새로운 작업으로 시작됩니다 (App2 : SecondaryActivity는 App2 응용 프로그램 컨텍스트로 시작되었지만 App1에서 왔으며 App2 응용 프로그램을 직접 시작하지 않았기 때문입니다) 아마 안드로이드에서 그것을 인식하고 FLAG_ACTIVITY_NEW_TASK를 사용하십시오). 내 응용 프로그램이 나빴 기 때문에 필요에 따라 좋거나 나쁠 수 있습니다.
Android 10에서 "액티비티 컨텍스트 외부에서 startActivity ()를 호출하면 FLAG_ACTIVITY_NEW_TASK 플래그가 필요합니다. 실제로 원하는 것입니까?"라는 메시지와 함께 앱이 충돌
합니다. .
따라서 Android 10에서 작동하게하려면 FALG_ACTIVITY_NEW_TASK를 사용해야하고 동일한 작업에서 모든 활동을 실행할 수는 없습니다.
보시다시피 안드로이드 버전마다 동작이 다릅니다.
활동 컨텍스트와 함께 App2 : SecondaryActivity를 시작하면 모든 것이 잘 작동하며 동일한 작업에서 모든 활동을 실행하여 선형 백 스택 탐색이 가능합니다.
유용한 정보를 추가했으면합니다.