2012-01-20 2 views
1

메인 액티비티에서 일부 스레드가 실행 중이며 해당 스레드가 실행되는 동안 하위 액티비티를 생성하여 스레드의 결과를 표시합니다.액티비티 사이에 핸들러 전달하기

주요 활동은 처리기를 통해 스레드의 결과에 대해 통지됩니다 (하위 활동이 실행 중이므로 상태는 onPause() 임). 다음과 같이 기본 액티비티와 하위 액티비티간에 동일한 작업을 수행하려고합니다. ((MainActivity) getParent()).setMainActivityHandler(handler)을 호출하여 하위 액티비티에서 다른 액티비티로 다른 액티비티를 전달합니다 (setMainActivityHandler()은 초기화 메서드 임). 주요 활동에서 처리기의 그런 다음 스레드가 Message을 핸들러를 통해 주 활동으로 보내면 주 활동은 다른 보조자와 동일한 마사지 또는 수정 된 다른 Message의 버전을 하위 활동으로 보냅니다. 하위 작업은이 메시지의 내용에 따라보기를 업데이트합니다.

그러나 ((MainActivity) getParent())null을 반환합니다. 나는 어떻게이 일을 할 수 있을까? 다른 방법이 있습니까?

PS : 두 활동 모두 활동을 연장합니다. 매니페스트 파일에는 기본 활동 (action.VIEW & category.DEFAULT)에 대한 의도 필터가 있으며 하위 활동을위한 필터가 없습니다.

답변

0

직선 핸들러 대신에 Messenger을 사용하고 싶습니다.이 프로세스는 프로세스 간/활동 메시징 용으로 설계되었습니다.

내가 수행하는 방식은 실행중인 모든 활동에 바인딩 된 서비스를 실행하고 백그라운드 작업을 기반으로 메시지를 전송하는 것입니다.하지만이 작업을 수행하지 않아도 될 것이라고 생각합니다.

두 번째 활동에서 정적 메신저를 선언하고 하위 활동이 생성 될 때이를 초기화하고 정적 메신저가 null이 아닌 경우 주 활동에서 메시지 만 보냅니다. 일시 중지/삭제시 null 해당 하위 활동 또는 트랙이 보이거나 표시되지 않는 경우 정적으로 추적)

관련 문제