참고: SINGLE_TASK id 와 SINGLE_INSTANCE id 는 필수입니까? R.result==0 인 조건에서 두 id 는 startActivity () 의 메서드에만 사용할 수 있고 startActivityForResult 메서드에는 사용할 수 없습니다. Task 의 관점에서 Android 는 서로 다른 Task 간의 Activity 가 데이터를 전달할 수 없다고 생각하기 때문입니다. 의 경우 NEW_TASK id 를 사용할 수 없지만 forResult 메서드를 호출해야 합니다. 물론 이런 견해는 매우 무뢰하다. 수학에서 언급한 공리처럼 공인된 규정이기 때문에 * * * 를 달성해야 한다. 필자는 당연히 달갑지 않다. 그래서 또 다른 문장 한 편을 찾았는데, 설명이 비교적 명확하다. 그림: 현재 응용 프로그램에 두 개의 스택이 있다고 가정합니다. 그 중 하나는 화면에 직접 표시되어 사용자와 상호 작용을 완료하는 역할을 합니다. 이를 BackStack; 이라고 합니다. 다른 하나는 배경에 숨겨진 백그라운드 (background) 입니까? Task, 스택 맨 위에 있는 Activity? Y 의 시작 모드가
로 설정되어 있습니다SingleTask.
만약 Activity? 2 에서 background 를 호출합니까? Task 에서 시작된 Activity? Y, 그럼 백그라운드? Task 내에서 화면을 차지하고 Task 아래의 모든 스택을 현재 스택 위치 및 순서 push 를 back 으로 유지하시겠습니까? Task 는 새로운 구조를 형성합니다. Activity 인터페이스에서 return 키를 누르면 Activity? Y 스택, Activity? X 가 화면을 차지합니다. 따라서, Activity2 에 의해 호출된 Activity? Y, 하지만 키를 반환하면 뒤로 Activity 가 표시됩니까? 엑스테. 따라서 Activity 에서 setResult () 함수를 실행해도 Activity2 를 받을 수 없습니다.
이러한 현상으로 인해 안드로이드 시스템은 보호 메커니즘에 있어 점프할 Activity 의 시작 모드가 singleTask 인 경우 onActivityResult () 함수를 실행해야 하는 경우 즉시 실행됩니다. 이렇게 하면 더 잘 이해할 수 있을까?