亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

關于藍牙bluetooth開發中遇到的DeadObjectException異常

標簽:
Android

因为工作需要,做了一个有关蓝牙设备的项目,时间不长,层次也不深,相信你只需要一个对BLE稍稍有些了解,再加上一款方便的框架,就能完成简单的开发(想做不简单的,那是框架能满足的吗??)。这里推荐一个,让你不至于去满世界找

https://github.com/xiaoyaoyou1212/BLE

本篇文章主要想记录一下开发过程中遇到的唯一一个浪费了时间的问题,为什么说是浪费时间,待会就能知道了。如题所说——DeadObjectException异常

大多数的BLE相关项目,都会需要读取信号强度、设备电量、连接及重新连接等等一些功能,我遇到DeadObjectException,出现在重连之后读取信号强度上。也许你遇到这个异常的情况和我不一样,也许依然会有所帮助。

public synchronized void readRssi(String address) {

    if (address != null) {
        mAddress = address;
    }    if (mRssiRunable == null) {
        mRssiRunable = new Runnable() {            @Override
            public void run() {
                Log.i("readRssi:" + mAddress);
                BleDevice device = Engine.getInstance().getDeviceFromConnection(
                        mAddress);                if (device != null && device.isConnected()) {
                    BluetoothGatt gatt = device.getGatt();                    if (gatt != null) {
                        Log.i("readRssi gatt:" + gatt + gatt.readRemoteRssi());
                        gatt.readRemoteRssi();
                        mHandler.postDelayed(this,300);
                    }
                }

            }
        };
    }
    mHandler.postDelayed(mRssiRunable, 300);
}

上面是我readRssi的代码,而我的问题出现在 gatt.readRemoteRssi()上。

DeadObjectException
DeadObjectException看到这个异常,就是字面意思嘛,某个对象挂了。
于是我打log、debug调试,发现Gatt相关并没有报空。在这之前并没有遇到过这个异常,我试图try住这个小麻烦,结果居然发现这个异常没办法被捕捉。oh我一定是见了鬼了。
纠缠了一段时间,发现网上最多的解决方案是
在application标签里面添加一句android:hardwareAccelerated="false"(禁用硬件加速)
我不知道对多少人有用,我是真的没有= =!

放下这个问题,喝杯热茶发了会呆,仔细一想,发现DeadObjectException出现后程序并没有crash掉,只是关于ble service的功能统统失去了响应,那么问题应该出现在service里,某个错误让ble service 停止了,再结合错误发生在重新连接上,猜想是不是重新连接上的设备并非是之前断开的设备(可别看不懂,我说的当然是指对象),也就是说,我在操作两个不同的对象。
那么我怎么确保我断开的和重连的一定是一个对象呢。
方法当然一大堆,不过我采用了比较省事的方式,单独管理

新增了一个ListDataSave类,用来将断开连接的设备保存下来,重新连接时只对这个类中存在的对象进行操作。问题终于解决了!!

解决方案很简单明了了——新增管理类对不同状态的设备单独管理。
前前后后花了不少时间,可能从来没遇到过类似问题,慌了神了- -。

问题可能不一样,但解题思想总是大同小异的,bug是无穷无尽,路还长啊

原文链接:http://www.apkbus.com/blog-685845-76995.html

點擊查看更多內容
TA 點贊

若覺得本文不錯,就分享一下吧!

評論

作者其他優質文章

正在加載中
  • 推薦
  • 評論
  • 收藏
  • 共同學習,寫下你的評論
感謝您的支持,我會繼續努力的~
掃碼打賞,你說多少就多少
贊賞金額會直接到老師賬戶
支付方式
打開微信掃一掃,即可進行掃碼打賞哦
今天注冊有機會得

100積分直接送

付費專欄免費學

大額優惠券免費領

立即參與 放棄機會
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號

舉報

0/150
提交
取消