2011-08-27 3 views
1

ActivityGroup을 사용하는 프로그램이 있습니다. 클래스 구조는 아래와 같다 :finish()가 호출 된 후 ActivityGroup의 자식 활동이 완료되지 않았습니다.

Class A extends ActivityGroup { 
onCreate(){ 
} 
} 

Class B extends A { 
onCreate() { 
startActivityResult();//launch C 
} 

onActivityResult(){ 
... 
finish();//finish activity after receive result from C;this line of code does execute in test 
... 
} 
} 

Class C extends A { 
onCreate(){ 
... 
} 
} 

B가 전체 프로그램의 입구이다. B의 onCreate()에서 startActivityResult()을 사용하여 C를 시작합니다. C에서 사용자에게 버튼을 보여줍니다; 사용자가 버튼을 클릭하면 C가 finish()setResult();을 호출 한 다음 B의 onActivityResult(), 에있는 모든 응용 프로그램을 종료하려면 finish() 메서드를 사용해보십시오.

문제는 버튼을 누른 후 화면이 검게 변하는 것입니다. 그럼 내가보기를 참조 hierarchyviewer.bat 너무 사용하십시오; 저의 놀랍게도, ID가 R.id.content 인 뷰와 id가없는 다른 루트 뷰가 있습니다. 그리고 도구는 활동 B가 맨 위에 있음을 보여줍니다. id가 R.id.content 인보기는 Activity의 루트보기입니다. 그러나 finish()이 호출 된 후에도 여전히 그 이유를 알 수 없습니다. finish() 다음에 다른 로직이 없으며 다른 수신기가 없거나 다른 블록이 끝내기 위해 블록 할 수 있습니다.

ActivityGroup의 잘못된 사용에 관한 문제 일 수 있습니다. 누구든지 도와 줄 수 있습니까?

내 첫 번째 질문에 대한 답변 주셔서 감사합니다 stackoverflow.

답변

0

근본 원인을 알고 있는데, 그 이유는 B의 singleTask 작업을 사용했기 때문입니다.하지만 다른 작업은 새로운 작업으로 시작되지만 여전히 완료되지 않았습니다.