Android IntentService中的套接字侦听器
在我的程序中,我通过IntentService类中的套接字接收数据,然后将数据作为广播发送给activity。活动处理输入并准备输出Android IntentService中的套接字侦听器,android,sockets,android-broadcast,android-intentservice,Android,Sockets,Android Broadcast,Android Intentservice,在我的程序中,我通过IntentService类中的套接字接收数据,然后将数据作为广播发送给activity。活动处理输入并准备输出 while (true) { socket = serverSocket.accept(); //Read data from socket //Publishing as a broadcast } 现在我的问题是 如何将活动的输出发送到intentService? 我知道我可以向i
while (true) {
socket = serverSocket.accept();
//Read data from socket
//Publishing as a broadcast }
现在我的问题是
任何见解都会有帮助。我认为您应该更改您的实现,因为IntentService只有一个线程,并且它被accept调用阻止。可能您应该创建两个单独的线程来接受连接和处理连接的套接字。使用这种方法,您可以轻松地使用静态对象或通过广播接收器将数据共享到连接的套接字线程。请参阅android sdk中的Bluetoothchat示例。
IntentService
是错误的行为选择。您应该使用常规的服务
,自己管理线程和连接
然后,您可以通过调用包含数据的
Intent
调用startService()
将数据从活动发送到服务,或者让活动绑定到服务并使用AIDL(远程过程调用).您的意思是希望此循环继续,同时读取循环内活动发送的数据?是的,类似的,您可以将数据添加到队列中,然后从循环内的队列中提取。不确定向队列中添加数据是什么意思?你能说得更具体一点吗?实际上,我最终使用了一个单例,在一个工作线程中创建了套接字侦听器,并对其进行了管理。