2011-12-31 3 views
1

내가하려는 것은 :원격 소켓 서비스를 바인딩하고 안드로이드 클라이언트에서 메시지를받을 수있는 방법이 있습니까?

  1. 소켓을 청취하는 서비스를 생성하십시오.
  2. 해당 서비스에 바인딩하고 소켓 클라이언트에서 메시지를 수신하는 다른 응용 프로그램을 시작합니다 (그리고 아마도 클라이언트에 다시 보낼 수도 있습니다).

해당 서비스에 대한 이벤트 수신기 콜백이 있고 바인더로 반환되지만 aidl에서 이벤트 수신기를 처리 할 수 ​​있는지 확실하지 않습니다. 그렇지 않다면이를 달성 할 다른 방법이 있습니까? 미리 감사드립니다.

답변

0

마지막으로 대체 옵션을 사용합니다.
작성자가 소켓 스레드에서 콜백이고 reader가 aidl 파일에 노출 된 동기화 된 메시지 버퍼를 만듭니다.
가벼운 리터이지만, 지금은 내 목표를 달성하기 위해 찾을 수있는 유일한 방법입니다.

public class CBuffer { 
    private List<String> list = 
     new ArrayList<String>(); 

    public synchronized void add(String cmd) { 
     list.add(cmd); 
     notifyAll(); 
    } 

    public synchronized String get() 
     throws InterruptedException 
    { 
     while (list.size() == 0) 
      wait(); 
     return list.remove(0); 
    } 
} 
관련 문제