我正在构建一个蓝牙应用程序,假设该应用程序没有被破坏,它可以在后台跟踪温度。我注意到在 Android Oreo 中我们有 background execution limits .我需要知道我的项目中是否遗漏了什么。这是我如何布置项目的。
我有一个 MainActivity
,它有一个蓝牙类 BluetoothObject
,负责主要 Activity 、BluetoothGattCallback()
类和我的本地领域数据库。
我现在在 BluetoothObject
中实现了一个 Service()
,它是 BluetoothObject
和我的 Realm 数据库之间的桥梁。到目前为止,一切似乎都有效。我用了this example设置一切。
由于这是一个绑定(bind)服务,我是否需要调用其他任何东西来让服务在后台保持 Activity 状态?设置完成后,我通过调用绑定(bind)服务:
val intent = Intent(context, BoundService::class.java)
context.bindService(intent, myConnection, Context.BIND_AUTO_CREATE)
我还在 list 文件中按照示例说明设置了服务。
我看到的问题是当应用程序打开时以及屏幕处于休眠状态时蓝牙连接保持连接。我有问题是当我的应用程序进入应用程序堆栈的后面然后手机就睡着了。连接可能会持续一个小时。我该怎么做才能保持这种联系?我需要启用任何权限吗? Android 8+ 中是否存在导致问题的内容?
最佳答案
没有问题。该限制专门用于终止后台服务,这些服务可能会耗费大量电池电量(正在进行的 socket 、蓝牙连接等)并且用户无法直接看到。
如果您希望您的服务不间断地运行,您将需要通过通知满足前台
服务。
关于Android 8.0 蓝牙设备后台服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51429634/