2014-05-15 2 views
0

일반적인 문제가 될 것으로 예상되는 것에 직면하고 있지만 기존 솔루션을 찾을 수 없었습니다. 나는 내 자신의 롤을하기 전에 내가 바퀴를 재발 명하지 않도록하고 싶다. "라이브"바이트 소스 인터페이스?

은 몇 시간 전, 나는 작업자 스레드는 데이터가 수신 될 때마다 UI 스레드에서 콜백을 게시, 소켓 연결을 설정하고 그것에서 읽고있는 블루투스 시리얼 라이브러리를 썼다. 내 논리에 따르면 일반적으로 UI 스레드 외부에서 I/O (특히 I/O 차단)를 수행하려고하므로 라이브러리에서 처리하도록하지 않는 것이 좋습니다. 앱은 들어오는 데이터를 처리하기 위해 콜백 인터페이스를 구현하기 만하면됩니다. 이런 식으로 뭔가 :

public interface ConnectorListener { 
    void onData(BluetoothConnector connector, byte[] data); 
} 

가 지금은 다른 직렬 바이트 소스와 싱크를 처리하기 위해 내 인터페이스를 일반화하고자합니다. 그래서 다시 한 번, 나는 내가 찾은 가장 가까운 것은 AsynchronousByteChannel입니다 내가 사용할 수있는 기존의 인터페이스 ...

답변

0

이 있는지보기 위해 주위를 캐스팅하고 있습니다. 이 인터페이스를 사용하면 데이터가 도착할 때 읽기를 시작하고 CompletionHandler에 콜백을받습니다. 이는 여러 콜백을 만들어 지속적으로 읽는 "라이브 소스"에 대한 원래 생각과 약간 다릅니다. AsynchronousByteChannel 자바 1.7에 추가 된 안드로이드에서 사용할 수 없습니다 때문에

어쨌든,이 논쟁입니다. 사용할 수있게 될 경우 코드를 표준화하기가 쉬워 지도록 복사 할 수 있습니다.

관련 문제