1

我正在開發一個應用程序,使用藍牙自動連接到附近的配對設備。出於這個原因,我需要聽ACTION_FOUND,DISCOVERY_FINISHED等藍牙特定的廣播,我必須註冊一個廣播接收器,它監聽那些廣播並相應地執行操作。事情是我需要這個廣播接收器在任何時候在我的應用程序的背景下工作。我試圖將它安裝到intentservice中,但事實證明它完成了快速並且onDestroy被稱爲結束我的接收器。爲了克服這個問題,我插入了一個無限循環,只有當一個屬性從真實變爲假時纔會斷開。不知何故,我覺得這是一個不好的做法,所以我問你是否有更好的解決方案?我應該在哪裏註冊廣播接收機?

PS。我應該將接收器安裝在主要活動中嗎?它什麼時候被破壞?只有當我用退後按鈕退出我的應用程序時才調用onDestroy,或者用任務殺手程序終止進程,還是在我的應用程序中輸入另一個GUI窗口時也會發生?

謝謝,邁克

回答

2

如果您註冊接收動態(Context.registerReceiver)它是工作註銷它(Context.unregisterReceiver)您的活動暫停之前。而作爲從文檔閱讀:

你不會暫停時收到意圖,這將減少不必要的系統開銷

當一些隱藏你的活動的onPause就會被調用。你可以重新註冊onResume。

但是,這不是你所需要的。如果您想在應用程序死機時收到廣播,則需要在Android Manifest中聲明它。我覺得這個代碼將工作:

<receiver android:name=".YourReceiverClassName"> 
     <intent-filter> 
      <action android:name="android.bluetooth.adapter.action.ACTION_FOUND"/> 
      <action android:name="android.bluetooth.adapter.action.ACTION_DISCOVERY_FINISHED"/> 
     </intent-filter> 
    </receiver> 
+0

謝謝你,在這裏人們可能會找到更多的信息: http://www.vogella.de/articles/AndroidServices/article.html – Miky

+0

@Jong做ü有任何想法的問題這裏說明http://stackoverflow.com/q/20904455/2624806 – CoDe