蓝牙4.0 关闭蓝牙后再打开,再连接设备时,总会报错 BluetoothGatt﹕ android.os.DeadObjectException。而且,更恶心的是,try catch 竟然无法捕获这个异常,我勒个擦擦的擦擦。
经验证分析,可能是 蓝牙重新打开后,服务还未绑定完成,就去调用connect连接,导致的。
解决方案:
监听蓝牙打开事件,然后 重新初始化BluetoothAdapter对象,并且延时调用connect方法:
else if (state == BluetoothAdapter.STATE_ON) {
// bleService = new BleControler(MaibuWatchApplication.getContext());//重新创建对象
Log.i(TAG, "蓝牙被打开");
bizManager.reset();//防止蓝牙关闭了,然后立即打开 DeadObjectException 异常
mHandler.postDelayed(new Runnable() {//延时连接,防止蓝牙服务还未绑定起来,就连接,导致异常
@Override
public void run() {
bizManager.needBleAutoConn(true);
}
}, 500);
}