同时收听服务中的多个流

时间:2016-03-15 13:55:11

标签: java android intentservice java-threads

我正在开发一个Android应用程序,它将数据从套接字连接转发到蓝牙接口。为了舒适地沟通,我实例化了两个BufferedReader,我想在IntentService中同时收听。此外,我希望该服务能够对蓝牙或WiFi连接丢失等事件作出反应。但是,服务应该运行,直到在服务器接口上收到特定的退出命令。

到目前为止,我使用了两个主题,但我无法弄清楚如何符合我的要求。

解决方案是使用常规Service而不是IntentService。在服务中,我使用两种异步方法,在我的情况下,AsyncTasks用于连接蓝牙设备和服务器。建立连接后,我开始使用阻塞readLine()方法监听数据的两个线程。在服务中,我什么都不做,这使得主线程可以自由处理蓝牙连接丢失。一旦用户希望断开连接,我的活动就会终止该服务。

1 个答案:

答案 0 :(得分:1)

不要使用Service来处理这个问题,而是使用自己的IntentService派生实现。 Intent设计用于处理临时后台线程上的传入Intent对象,然后在处理完所有IntentService后完全关闭。您已经将大部分繁重的工作移动到您自己的后台线程中,因此无需使用onStartCommand()。但是,请确保您创建的任何{{1}}实现都不执行阻塞操作,因为这是在主线程上执行的。