【发布时间】:2018-07-19 18:31:39
【问题描述】:
假设应用程序没有被破坏,我正在构建一个在后台跟踪温度的蓝牙应用程序。我注意到在 Android Oreo 中我们有background execution limits。我需要知道我是否遗漏了我的项目中的任何内容。这是我如何布置项目的。
我有一个MainActivity,它有一个蓝牙类BluetoothObject,负责主要活动BluetoothGattCallback() 类和我的本地Realm 数据库之间的通信。
我现在在BluetoothObject 中实现了一个Service(),它是BluetoothObject 和我的Realm 数据库之间的桥梁。到目前为止,一切似乎都奏效了。我使用this example 设置了所有内容。
既然这是一个绑定服务,我是否需要调用其他任何东西来让服务在后台保持活跃?设置好后,我通过调用绑定服务:
val intent = Intent(context, BoundService::class.java)
context.bindService(intent, myConnection, Context.BIND_AUTO_CREATE)
按照示例的说明,我还在清单文件中设置了服务。
我看到的问题是蓝牙连接在应用打开且屏幕处于睡眠状态时保持连接。我遇到的问题是当我的应用程序进入应用程序堆栈的后面,然后手机就睡着了。连接可能会持续一个小时。我能做些什么来保持这种联系?我需要启用任何权限吗? Android 8+ 中是否存在导致问题的内容?
【问题讨论】:
-
如果您使用的是
startService,则需要将其更改为startForegroundService。此外,您需要在服务中创建通知。 -
@SusmitAgrawal 似乎你和你和 Pawel 有相同的答案。我会回来报告,看看它是否有效,谢谢。