应用程序在Android中被杀后,维持蓝牙连接的最佳方法是什么?

问题描述 投票:0回答:2

我正在Android中开发一个连接到蓝牙设备的应用程序。有时,警报管理器创建的警报会响起,并且应该向连接的蓝牙设备发送信息。我的问题是,建立此连接的最佳方式是什么,以便在活动停止时(app关闭)我可以与设备通信。我已经阅读了有关意图服务,前台服务,远程信使服务的信息,并且没有找到任何说明提供服务的最佳方式的来源,该服务在应用程序关闭以托管蓝牙时不会结束。

android service bluetooth
2个回答
0
投票

在yourservice oncreate()中创建服务类扩展服务和bluetoothadapter init


0
投票

Foreground Service

首先,我建议使用foreground service

该服务无限期运行,应用程序将在每次被杀死时(由用户或系统)重新创建。 此外,前景服务也被排除在Oreos background execution limits之外。

查看this帖子,了解Android服务生命周期的详细说明和测试。还要注意,测试服务的生命周期可能非常困难。一旦应用程序从最近使用过的应用程序列表中删除或者被杀死,调试工具通常会松散与服务的连接。

Service lifecycle

设置前台服务后,您应该使用Yongho指出的服务生命周期钩子来保留对外围设备的引用。

例如,您可以创建并将BluetoothScannerCallback分配给OnCreate()中的实例变量,如下所示:

OnCreate() {
    _scannerCallback = CreateScannerCallback();
}

这样,您将收到有关连接丢失的通知。还可以在服务中使用Androids蓝牙默认适配器,以便在将主机应用程序移至后台或终止(并重新创建)时保持与蓝牙设备的连接。

您还应该对OnDestroy()中的所有引用进行取消初始化。

© www.soinside.com 2019 - 2024. All rights reserved.