集成了一個藍牙的掃碼槍,發現每次連接時,應用的當前Activity會銷毀再次創建,除錯了下, 沒有監聽到任何的事件,非常困惑,搜了一陣了解到是Android的一個機制,
某些設備配置可能會在運行時發生變化(例如螢屏方向、鍵盤可用性,以及當用戶啟用多視窗模式時),發生這種變化時,Android 會重啟正在運行的 Activity,
如果應用在特定配置變更期間無需更新資源,并且因性能限制您需要盡量避免 Activity 重啟,則可宣告 Activity 自行處理配置變更,從而阻止系統重啟 Activity,
因此在清單檔案 對應的Activity中增加屬性 android:configChanges
該屬性含義:
列出 Activity 將自行處理的配置變更,在運行時發生配置變更時,默認情況下會關閉 Activity 并將其重啟,但使用該屬性宣告配置將阻止 Activity 重啟,相反,Activity 會保持運行狀態,并且系統會呼叫其 onConfigurationChanged() 方法,
修改如下:
AndroidManifest.xml
<activity
....
android:configChanges="keyboard|keyboardHidden"
....
從而忽略鍵盤配置變化,更多資訊見官方https://developer.android.com/guide/topics/resources/runtime-changes
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/432060.html
標籤:Android
