BluetoothGatt﹕ android.os.DeadObjectException

蓝牙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);
                }


经过这样的调整后,目前还没有碰到这个恶心的异常

你可能感兴趣的:(BluetoothGatt﹕ android.os.DeadObjectException)