android设备连接蓝牙外设导致activity重启(recreate)的问题

在部分Nexus设备上,Android应用在连接蓝牙设备后会异常退出,原因是配置变化(configChange)触发了Activity的销毁和重建。经过分析,发现是`navigation`配置变化引起的问题,因为连接蓝牙键盘后,导航方式发生了改变。虽然这是由于实际设备行为与官方文档描述不符造成的,但该问题只在少数Nexus设备上出现,仍然是一个不容忽视的碎片化问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

最近遇到个bug,在android连接蓝牙设备后,程序异常退出(仅在部分nexus设备上出现)。

从logcat发现在JNI层报了一个错(我的程序使用了JNI),

一路追上去发现程序的异常是因为activity的onDestroy被调用了。

这就好办了,肯定是因为设备连接后,触发了configChange,而程序又没有正常处理这种情况。

检查了一下AndroidManifest.xml,发现activity的configChanges属性为

android:configChanges="fontScale|keyboard|keyboardHidden|locale|orientation|screenLayout|uiMode|screenSize"
几乎包含了所有的configChanges,除了mcc, mnc, touchscreen, navigation, smallestScreenSize和layoutDirection。

其中mcc和mnc理论上不可能发生变化,因为我压根儿就没挪地儿;

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值