即使手机进入睡眠状态,我也希望跟踪与BLE device的关联 - 还有一个回调来跟踪连接/断开BluetoothGattCallback。
因此,从上面的教程中可以看到Service
public class BluetoothLeService extends Service {
private final BluetoothGattCallback mGattCallback = new BluetoothGattCallback() {
@Override
public void onConnectionStateChange(BluetoothGatt gatt, int status, int newState) {
//...
}
//...
}
//...
}
连接我打电话
mBluetoothGatt = device.connectGatt(this, false, mGattCallback);
如你所见,我没有在任何地方获得唤醒锁。
答案 0 :(得分:1)
只要你的Service
还活着 - 那么回调也是如此。
请记住,该服务可能会被系统自动关闭,特别是如果您的应用当前不在后台,或者内存压力很低。
我猜你不需要担心这个唤醒锁,因为系统会为你“唤醒”。我会说,如果你有一个唤醒锁定,你的服务将有更好的机会不被系统阻止,但它会花费你precious battery life, and extra permissions
牢记这一点,再加上知道可能发生的“更糟糕”的想法是你的服务将被停止,结论是用唤醒锁解决这个问题,可以用更简单的方式解决:当服务重新启动时执行gatt连接!(你应start it as sticky为此)。这样你就可以节省电池寿命,并且不会使CPU保持有效。
我正在从我的应用程序不断进行背景定期BLE扫描,并从android Service
类连接到GATT服务,我没有遇到任何你担心的问题。
所以我建议你在遇到具体问题之前不要担心。
答案 1 :(得分:0)