2012-09-18 4 views
2

지연 호출하여 onActivityResult : 활동 B의 버튼 클릭시는 I, 활동 B 시작하는 활동가있는 그 사이 활동

activityA.startActivityForResult(new Intent(activityA, B.class), REQUESTCODE_B); 

을 방법 A. 즉에서 작업 C를 시작하는 실행

활동 C에서 버튼을 클릭하면 B가 활성 상태 인 동안 finish()를 호출하여 닫힙니다.

이제 activityA의 onActivityResult() 메서드가 호출 될 것으로 예상되지만 activityB가 완료된 후에 만 ​​호출됩니다. 이것은 의도적으로 설계된 것이라고 생각할 수 있습니다. 그러나 activityA에게 activityC가 완료되었음을 직접 알릴 수있는 방법이 있습니까? 활동 B 나 C가 명시 적으로 A에 대해 알 필요가 없다면?

답변

1

이것은 매우 나쁜 습관입니다. ActivityC를 시작하면 Android에서 ActivityA가 파괴되지 않았는지 확인할 수 없습니다. Android는 언제든지 백그라운드 활동을 파괴 할 수 있습니다. ActivityC.finish()를 호출하면 ActivityA가 존재하지 않습니다. 그런 다음 ActivityB.finish()를 호출하면 Android는 액티비티 스택에서 ActivityA를 만들고 완료된 액티비티에 대해 onActivityResult() 메서드를 호출합니다. 어떤 순서로 실행되는지는 확실하지 않습니다. ActivityC에서 ActivityB로 결과를 반환 할 수없는 이유를 알려주십시오.

+0

나는 당신이 옳다고 생각합니다. Activity A (B와 C는 더 많은 대화 상자)에서 모든 활동을 관리하려고했지만 설계를 수정해야합니다. – Kretep