我正在开发一个Android应用程序,它将数据从套接字连接转发到蓝牙接口。为了舒适地沟通,我实例化了两个BufferedReader
,我想在IntentService
中同时收听。此外,我希望该服务能够对蓝牙或WiFi连接丢失等事件作出反应。但是,服务应该运行,直到在服务器接口上收到特定的退出命令。
到目前为止,我使用了两个主题,但我无法弄清楚如何符合我的要求。
解
解决方案是使用常规Service
而不是IntentService
。在服务中,我使用两种异步方法,在我的情况下,AsyncTasks
用于连接蓝牙设备和服务器。建立连接后,我开始使用阻塞readLine()
方法监听数据的两个线程。在服务中,我什么都不做,这使得主线程可以自由处理蓝牙连接丢失。一旦用户希望断开连接,我的活动就会终止该服务。
答案 0 :(得分:1)
不要使用Service
来处理这个问题,而是使用自己的IntentService
派生实现。 Intent
设计用于处理临时后台线程上的传入Intent
对象,然后在处理完所有IntentService
后完全关闭。您已经将大部分繁重的工作移动到您自己的后台线程中,因此无需使用onStartCommand()
。但是,请确保您创建的任何{{1}}实现都不执行阻塞操作,因为这是在主线程上执行的。