我正在Android中开发一个连接蓝牙设备的应用程序。有时,警报管理器创建的警报会响起,并且应该向连接的蓝牙设备发送信息。我的问题是,建立此连接的最佳方式是什么,以便在活动停止时(app关闭)我可以与设备通信。我已经阅读过关于意图服务,前台服务,远程信使服务的内容,并且没有找到任何来源,说明在应用程序关闭主机蓝牙时,提供服务不会结束的最佳方式。
答案 0 :(得分:0)
在你的服务中创建你的服务类扩展服务和bluetoothadapter init oncreate()
答案 1 :(得分:0)
首先,我建议使用foreground service。
该服务会无限期运行,并且每次被杀死(由用户或系统)时都会重新创建该应用。
另外,前景服务也从Oreos background execution limits中排除。
查看this帖子,详细描述和测试Android服务的生命周期。还请注意,测试服务的生命周期可能会很艰难。一旦将应用从最近使用过的应用列表中清除或以其他方式杀死,调试工具通常会失去与服务的连接。
一旦设置了前台服务,就应该利用Yongho所指出的服务的生命周期挂钩来保持对外围设备的引用。
例如,您可以像这样在OnCreate()
中创建实例并将BluetoothScannerCallback分配给实例变量:
OnCreate() {
_scannerCallback = CreateScannerCallback();
}
这样,您将收到有关连接丢失的通知。还可以在服务中使用Androids蓝牙默认适配器,以便在将主机应用程序移至后台或被杀死(并重新创建)时保持与蓝牙设备的连接保持活动状态。
您还应该取消初始化OnDestroy()
中的所有引用。