我开发了一个由三个活动和一个服务组成的 Ble Android 应用程序: - 第一个扫描设备 - 第二个连接到设备 - 第三个在屏幕上写入通信结果 - 服务内部有一些功能连接到设备,检查连接,自动重新连接等,这个服务是一个启动的服务并绑定到每个活动(第一个应用程序启动这个服务)
在一些教程中,我看到在这种情况下使用的是未启动的服务,而是绑定的服务。但我想知道,当我们在两个活动之间切换时,如果服务没有“启动”一个,是否存在可能从系统中关闭的风险,因为在活动之间的切换中服务是什么都没有绑定的?
我开发了一个由三个活动和一个服务组成的 Ble Android 应用程序: - 第一个扫描设备 - 第二个连接到设备 - 第三个在屏幕上写入通信结果 - 服务内部有一些功能连接到设备,检查连接,自动重新连接等,这个服务是一个启动的服务并绑定到每个活动(第一个应用程序启动这个服务)
在一些教程中,我看到在这种情况下使用的是未启动的服务,而是绑定的服务。但我想知道,当我们在两个活动之间切换时,如果服务没有“启动”一个,是否存在可能从系统中关闭的风险,因为在活动之间的切换中服务是什么都没有绑定的?
两个回答您的问题 - 您的服务随时都有可能停止。如果您围绕在您切换活动时服务将打开的想法设计您的应用程序,那么您将拥有比您需要的复杂得多的设计。
您可能会注意到示例中定义了一个服务:http: //developer.android.com/guide/topics/connectivity/bluetooth-le.html
正如它所写的那样,该服务只做一件事。它扫描一个设备,当它找到一个设备时,它会广播 BluetoothDevice(它是一个 Parcelable)。然后服务停止扫描。这种扫描代码可以很容易地在应用程序中。但关键是扫描关闭,蓝牙设备通过意图传递给其他组件。
还需要记住的一件好事是,当您使用 BLE 时,您的应用程序已经在与服务通信。所以定义一个新的服务来包装 BLE 连接是完全多余的(从技术上讲)。将多个活动绑定到服务以与一个设备对话……可能,但并非没有复杂性。您将遇到的边缘情况的数量使您的工作量比让您的活动直接与设备对话要多得多。
希望有帮助。
干杯。