我是在自定义的view中启动一个蓝牙服务(不知是否有问题):
Intent gattServiceIntent = new Intent(getContext(), BluetoothLeService.class); Boolean flag=getContext().bindService(gattServiceIntent, mServiceConnection, getContext().BIND_AUTO_CREATE);
启动完成后,我立即连接:
mBluetoothLeService.connect(CurrentAddress);
程序运行到这里一直报空指针,经查是因为mBluetoothLeService没有初始化,更进一步原因是在启动mBluetoothLeService服务时根本就没有调用onBind函数,这是什么原因呢?
问题找到了,是因为bindService是一个异步方法,它会在connect执行完成后再执行,所以mBluetoothLeService不会被初始化总是空。