2013-04-27 3 views
0

WifiDirect로 데이터를 전송하고 싶습니다.Android WifiDirect 오픈 소켓 연결

그래서 두 개의 장치를 연결하고 하나의 장치에 SeverSocket을 열었습니다. 활동의 버튼을 클릭하여 다른 장치에서이 ServerSocket에 연결하려고 할 때 (그룹 소유자의 IP가있는 소켓을 열면 서버), "소켓 연결을 열지 못했습니다."라는 메시지가 나타납니다.

IntentService를 열고 코드에서 buttenClicked 메서드를 실행하는 대신 코드를 실행하면 완벽하게 작동합니다.

Activity에서 Sent를 열 수없는 이유는 무엇입니까? IntentService에서 Socket을 열 수없는 이유는 무엇입니까?

답변

1

안드로이드는 ui 스레드에서 오랫동안 실행되는 작업을 허용하지 않습니다. 인 텐트 서비스가 별도의 스레드에서 실행되는 동안 버튼 클릭이 UI 스레드에서 실행 중이므로 serversocket은 클라이언트가 연결될 때까지 대기 할 수 있습니다. 그것을 실행할 수없는 UI 스레드.

향후 애플 리케이션을 위해 오랫동안 스레드를 중단시킬 수있는 작업이있을 때마다 intentservice 또는 asynctask 또는 Java의 일반 스레드 클래스를 사용하는 다른 스레드에서 수행하십시오.