美文网首页Android
Android连接和断开蓝牙导致Activity oncreat

Android连接和断开蓝牙导致Activity oncreat

作者: 我要出国敲代码 | 来源:发表于2019-08-26 19:27 被阅读0次

    某天测试提了一个Bug,播放音乐时连接和断开蓝牙会导致App崩溃,而且是必现的,嗯,必现就好办。
    调试查找一番后发现蓝牙断开或者连接导致Activity 的onCreate()方法重复执行了,咦,没碰到过啊,老办法有Bug先百度,整个百度就百度到了整个:

    cdsn.png
    https://ask.csdn.net/questions/24512

    可怜大兄弟13年的问题都还没有人回答了~
    百度不行就google,但是最近最近墙太高了,翻不过去啊~
    好在还有神器Stack Overflow还是可以上的,我解决不了的问题好像都是从上面找到了答案~

    stack.png
    https://stackoverflow.com/questions/41420025/android-app-fires-oncreate-whenever-bluetooth-keyboard-connects-disconnects?r=SearchResults

    下面有个回答提醒了了我,蓝牙输入设备导致configChanges变化,但我是蓝牙耳机啊,哪来的输入设备???一般我们常见导致onCreate()方法重复执行的有keyboardHidden、orientation、screenSize三兄弟。
    然后打开系统设置-蓝牙-已配对蓝牙设备,看到了一个神奇的东西:

    bl.png
    waht ?????这个耳机哪来的输入设备??难道就这个导致的?
    对着google android:configChanges:
    cf.png
    https://developer.android.google.cn/guide/topics/manifest/activity-element.html?hl=en

    嗯,"keyboard" The keyboard type has changed — for example, the user has plugged in an external keyboard.
    其余都不沾边的,试试~....building....
    一顿操作猛如虎,正当我得意洋洋觉得问题迎刃而解了,可是现实把我摁在地上狠狠的摩擦,configChanges加了keyboard依旧没卵用。
    冷静下,仔细分析,问题应该是出在configChanges这点没错,但不是keyboard那是哪个呢?其余的都没有关系啊~
    没办法喽,只能一个一个试试看~,好在总共才10多个,最后试出来手机这个家伙:"navigation" The navigation type (trackball/dpad) has changed. (This should never normally happen.),configChanges加上navigation就好了。

    看到这里,蓝牙耳机,输入设备,navigation,你是不是?????, wj.png

    哈哈,奇妙的组合~~(leader说可能是这个蓝牙耳机乱注册了些东西吧,别的蓝牙耳机没有这个问题)

    相关文章

      网友评论

        本文标题:Android连接和断开蓝牙导致Activity oncreat

        本文链接:https://www.haomeiwen.com/subject/bwbdectx.html