1. 程式人生 > 其它 >Android藍芽掃碼連線時,防止Activity重啟

Android藍芽掃碼連線時,防止Activity重啟

  集成了一個藍芽的掃碼槍,發現每次連線時,應用的當前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