前言
用的好好的,突然又一天,线上各种问题,而且莫名其妙.没有具体的表现,我一查日志,发现有些操作被循环执行了n次,可我没有写循环,他是如何执行的呢? 最后通过各种定位,发现问题
部分手机在停止蓝牙扫描以后,还会继续扫描几秒钟,
因为这边蓝牙做了些特殊处理,就是蓝牙广播的唯一标识是待了状态的.因为状态可能不一样,所以,就算设置了同一个设备只搜索一次,也会有出现同一个设备出现多次的问题.
蓝牙的操作都是异步的,当设备被搜索到以后,我立即停止了搜索,并开始进行蓝牙状态修改操作.结果某些手机在停止所搜以后,还能继续搜索,等我修改了设备状态以后,他还在搜索,并重新执行了第一次搜索成功后要执行的代码.这导致我的整个流程都乱了.
解决的办法
当获取到唯一标识以后,立即放入全局变量,等停止后出现第二次进入的时候,先判断全局变量是否为空,如果不为空,就不继续执行,
网友评论