Android:多线程蓝牙SPP/RFCOMM如何在更改活动时保持我的BluetoothSocket和OutputStream处于活动状态

Android:多线程蓝牙SPP/RFCOMM如何在更改活动时保持我的BluetoothSocket和OutputStream处于活动状态,android,multithreading,service,bluetooth,handler,Android,Multithreading,Service,Bluetooth,Handler,我对Android非常陌生,对多线程也非常陌生 我正在编写一个android应用程序,它包含多个实现onClickListners的活动,onClickListners在单击按钮时发送蓝牙消息。在一次活动中,我成功地连接并保持BluetoothSocket和OutputStream打开。我不做任何接收,将始终作为客户端连接到已知的MAC地址。当用户想要进入一个子菜单时,也会通过单击按钮来提示,如何保持我的BluetoothSocket打开 我知道我需要在后台运行一个线程来管理连接,我将使用处理程

我对Android非常陌生,对多线程也非常陌生

我正在编写一个android应用程序,它包含多个实现onClickListners的活动,onClickListners在单击按钮时发送蓝牙消息。在一次活动中,我成功地连接并保持BluetoothSocket和OutputStream打开。我不做任何接收,将始终作为客户端连接到已知的MAC地址。当用户想要进入一个子菜单时,也会通过单击按钮来提示,如何保持我的BluetoothSocket打开

我知道我需要在后台运行一个线程来管理连接,我将使用处理程序/消息在BluetoothService线程和当前活动的UI线程之间交换数据,但我不确定应用程序将使用哪些类和方法启动BluetoothService线程,以便所有活动都可以访问它

它是否是我在程序的第一个活动中开始的,并且必须以一种防止它在pause()和onStop()上结束的方式来实现它?如果是这样,我将如何启动它?建议使用哪些类

或者它是我可以在AndroidManifest.xml文件中定义的东西,以便在应用程序启动后随时启动和运行。作为服务运行并使用消息/处理程序传递数据

这只是我的两个想法,但我知道我可能还远远不够

谢谢


Jonathan

我认为正确的方法是将特定于蓝牙的代码转移到后台服务