在一个应用程序中,我有一个主要活动和几个片段,该应用程序通过连接到两个蓝牙设备来工作。
我需要的是在关闭应用程序之前断开并关闭手机的蓝牙。我已经尝试使用 MainActivity 中的 onDestoy() 和 onPause() 方法,但我没有得到预期的结果,因为虽然蓝色关闭了应用程序变得不稳定并且生成了异常并且它无法正常退出。
有人可以指导我使用我应该编程的方法。非常感谢。
@Override
public void onDestroy(){
super.onDestroy();
try {
mBluetoothAdapter.disable();
mBluetoothGatt.disconnect();
} catch (Exception ex) {
}
}
我强调问题不在于代码行,因为如果它们关闭了蓝牙,而是我在其中执行此操作的事件会产生不需要的异常。
从@BradHein查看这个答案,您应该首先关闭流并打开连接,然后是 BluetoothAdapter/BluetoothManager:
方法
resetConnection()
:检查生命周期
Activity
:您应该选择哪种方法取决于您对应用程序的期望行为。如果你想在另一个应用程序被带到前台时禁用蓝牙(例如,用户切换任务),你应该使用
onResume()
和方法onPause()
。如果您想在您的应用程序完全销毁时禁用 BT,那么
onDestroy()
.关于您收到的错误,我建议您在调用类的方法时应用以下标准
super
。当您覆盖创建应用程序的方法(onCreate、onResume 等)时,您应该首先调用父类方法(使用
super.onResume()
)。当你重写一个破坏你的应用程序的方法(onDestroy、onPause 等)时,最后调用父类的方法(
super.onPause()
)我给你举个例子:
请将此作为一般规则,因为总会有例外。