前一段时间在开发一个盘点系统时需要连接一个蓝牙扫码枪,在调试过程中发现每次连接了蓝牙设备后页面就重新调用onCreate方法,最后经过研究发现由于蓝牙扫码枪是以蓝牙键盘的形式连接的,而系统每次调用弹出键盘或隐藏键盘,程序就重新出发onDestory->onCreate的生命周期。
解决方法:通常在AndroidManifest.xml中指定Activity添加以下代码(代码中加粗部分)
<activity
android:name=".MainActivity"
android:label="@string/app_name"
<strong>android:configChanges="orientation|keyboard|keyboardHidden"</strong>>
这句代码的意思是设备旋转、显示键盘、隐藏键盘时调用Activity的onConfigurationChanged方法,如果这句话不声明,设备旋转、显示键盘、隐藏键盘触发时则会调用onCreate方法。