일반적인 문제가 될 것으로 예상되는 것에 직면하고 있지만 기존 솔루션을 찾을 수 없었습니다. 나는 내 자신의 롤을하기 전에 내가 바퀴를 재발 명하지 않도록하고 싶다. "라이브"바이트 소스 인터페이스?
은 몇 시간 전, 나는 작업자 스레드는 데이터가 수신 될 때마다 UI 스레드에서 콜백을 게시, 소켓 연결을 설정하고 그것에서 읽고있는 블루투스 시리얼 라이브러리를 썼다. 내 논리에 따르면 일반적으로 UI 스레드 외부에서 I/O (특히 I/O 차단)를 수행하려고하므로 라이브러리에서 처리하도록하지 않는 것이 좋습니다. 앱은 들어오는 데이터를 처리하기 위해 콜백 인터페이스를 구현하기 만하면됩니다. 이런 식으로 뭔가 :public interface ConnectorListener {
void onData(BluetoothConnector connector, byte[] data);
}
가 지금은 다른 직렬 바이트 소스와 싱크를 처리하기 위해 내 인터페이스를 일반화하고자합니다. 그래서 다시 한 번, 나는 내가 찾은 가장 가까운 것은 AsynchronousByteChannel입니다 내가 사용할 수있는 기존의 인터페이스 ...