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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容