我正在创建一个需要与服务器建立永久TCP连接的Android应用程序。
我创建了一个服务,用于建立连接并侦听输入流上的传入字节(服务在后台运行)。
public class TCPServiceConnection extends Service{
//variables......
//...............
public void onCreate() {
establishTCPConnection():
}
前4个传入字节表示完整消息的消息长度。
从Inputstream读取完整的Message到一个单独的缓冲区后,我想在另一个分析Message的Thread中调用另一个Service / Asynctask。 (该服务应继续侦听进一步传入的消息)。
public handleTCPInput() {
while(tcp_socket.isConnected()) {
byte[] buffer = readCompletemessagefromTCPInputstream;
calltoAnotherThreadToanalyzeReceivedMessage(buffer);
}
//handle exceptions.......
}
Android / Java中是否存在已经处理对我的分离byte []缓冲区的多重访问的Messagequeue系统?
答案 0 :(得分:0)
为了实现这一点,我建议你启动一个处理程序线程,它将继续从输入流中读取。
一旦读取传入消息,它就会使用处理程序将其传递给主线程。
例如。 handler.sendMessage()
现在,由于此处理不是繁重的操作,您可以决定主/ UI线程来处理此信息,或者您可以启动异步任务来执行此操作。