我正在开发涉及蓝牙通信的应用程序。即使设置连接的活动关闭,蓝牙通信也应该继续。首先,我已经考虑过使用Service,这似乎是正确的方法。但是,在蓝牙聊天示例中,通信发生在另一个线程中,而不是在服务中。我在我的应用程序中使用了该代码并且它正常工作。是否正确使用Thread进行蓝牙通信,或者我是否只需要使用服务?蓝牙通信应该是活动的,直到我的应用程序在RAM中,如果我在活动之间切换应该无关紧要。
一个分离的线程与你的情况下的服务没有区别,除了它遵循Android的活动生命周期,但是一个线程可能被杀死而且没有状态可以被恢复。一旦服务被杀,Android将尝试重新启动服务。
回答你的问题有点太迟了,但迟到总比我想的要好。我已经开发了一个在两个设备之间进行蓝牙通信的应用程序,我想总结一下我的经验。我们通常使用的服务,当我们想要做一些不太重的后台进程时,在某种程度上,我的意思是服务(如果它是巨大的)将阻止我的主UI线程因此减慢你的操作系统或ANR可能是,这是我们不想要的。
蓝牙通信是一个永远运行的过程,应该只使用一个线程,因为这将作为一个单独的线程,并不会对主UI线程产生任何影响。如果我错了,请纠正我。