其他分享
首页 > 其他分享> > Android连接和断开蓝牙导致Activity-oncreate重新执行

Android连接和断开蓝牙导致Activity-oncreate重新执行

作者:互联网

某天测试提了一个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说可能是这个蓝牙耳机乱注册了些东西吧,别的蓝牙耳机没有这个问题)

标签:耳机,google,Activity,蓝牙,configChanges,keyboard,Android,oncreate,navigation
来源: https://blog.csdn.net/qq_20613149/article/details/100372955