2011-03-31 7 views
1

안드로이드 애플리케이션의 두 스레드가 서로 통신 할 수있게하려고합니다. 간단 하죠? 순간소켓과 멀티 쓰레드 (안드로이드)

메인 스레드가 응용 프로그램의 사용자 인터페이스를 제어
  • (스레드 A)
  • 다른 제어 TCP 소켓 (스레드 B)

: 나는 두 개의 스레드가 스레드 A가 스레드 B에 메시지를 보내려면 정적 인스턴스 데이터가있는 클래스와 스레드 A가 설정할 수있는 정적 메서드를 사용하고 있습니다. 스레드 B는 소켓을 통해 들어오는 데이터를 확인하기 위해 루프를 사용하므로 그 보충 수업에서 변경 사항을 확인하기 위해 동일한 루프를 사용했습니다. 그래서 어떻게 스레드 A에서 스레드 B로 데이터를 보낼 수 있습니다. 그러나 스레드 B가 스레드 A (주 사용자 인터페이스 스레드)에 소켓을 닫았다 고 알릴 수 있기를 바랍니다. 불행히도, 스레드 A는 루프를 사용하여 무언가를 계속 검사하지 않습니다. 그래서 제 질문은 스레드 A에 스레드 B의 변경 사항을 어떻게 알리는 것입니까? 검색을했는데 Observer 패턴이 유용하다는 것을 알았지 만 Observer 패턴을 기존 설정에 가져올 수 있는지 확신 할 수 없습니다. 어떤 도움이나 안내하는 생각이 많이 들었을 것입니다! 감사.

답변

2

UI 스레드 (스레드 A)에서 핸들러를 인스턴스화하고 스레드 B에 핸들러의 참조를 전달하십시오. 스레드 A에 무언가를 알리려면 Message 객체를 만들고 sendMessage()에 핸들러를 사용하십시오. 아주 간단한 패턴의

예 처리기에 대한 here

확인 offical 한 문서 및 메시지 클래스 안드로이드 핸들러 튜토리얼

+0

오에 대한

구글, 우수한. 이것은 완벽하게 작동합니다. 감사! – mccolo

관련 문제