服务和三项活动,启动服务是正确的方法吗?

时间:2016-04-12 23:51:34

标签: android android-activity android-service android-service-binding android-ble

我开发了一个由三个活动和一个服务组成的Ble Android应用程序:   - 第一个扫描设备   - 第二个连接到设备   - 第三个在屏幕上写通信结果的人   - 在服务内部有一些功能可以连接到设备,检查连接,自动重新连接等等,这项服务是一个已启动的服务并绑定到每个活动(第一个应用程序启动此服务)

在一些教程中,我看到在这种情况下使用的是未启动的服务,而是绑定的服务。但我不知道自己,当我们在两个活动之间切换时,如果服务没有“启动”,那么是否存在ower服务可能会从系统关闭的风险,因为在活动之间切换时服务是否绑定什么?

1 个答案:

答案 0 :(得分:1)

两个回答你的问题 - 你的服务有可能随时被停止。如果您围绕在切换活动时服务将会启动的想法设计您的应用程序,那么您将拥有比您需要的更复杂的设计。

您可能会注意到示例中定义了一项服务:http://developer.android.com/guide/topics/connectivity/bluetooth-le.html

该服务,因为它写的只做一件事。它扫描一个设备,当它找到一个设备时,它会广播BluetoothDevice(这是一个Parcelable)。然后服务停止扫描。此扫描代码可以很容易地在应用程序中。但关键是扫描关闭,BluetoothDevice通过意图传递给其他组件。

要记住的一件好事是,当您使用BLE时,您的应用程序正在与服务进行通信。因此,定义用于包装BLE连接的新服务是完全冗余的(从技术上讲)。有多个活动绑定到服务以与一个设备通信......可能,但并非没有它的复杂性。您将遇到的边缘情况的数量使得工作量远远超过让您的活动直接与设备通信。

希望有所帮助。

干杯。