android不同版本sdk下蓝牙4.0 scancallback兼容性怎么解决?
daojo 2017-09-21 01:19:19 安卓蓝牙4.0在5.0以后用ScanCallback,在之前用LeScanCallback。我现在是在app初始化的时候就注册了一个service,在OnServiceConnected的时候开始搜索蓝牙。
本来我是直接在这个service里面,直接声明了一个成员变量private ScanCallback mScanCallback = new ScanCallback(){。。。},在变量里override onScanResult这个函数,进行设备名称判断。现在兼容性问题来了,编译没问题,一旦真机运行,在5.0以下的手机中运行的时候,就会碰到NoClassDefFoundError。为了解决这个问题,我增加了版本判断,把这个mScanCallback 变量放到了一个函数里面,public void scanLeDevice(final boolean enable) {
ScanCallback mScanCallback = new ScanCallback() {
。。。
}
}
但因为我不断在各种情况下开启scan或者停止scan,不停调用scanLeDevice等于不停new这个变量,结果导致很多空指针问题,而之前并没有。
碰到这种局面,各位有没有好的解决方案?