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

最近遇到个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理论上不可能发生变化,因为我压根儿就没挪地儿;