2013-11-21 117 views
0

我正在開發一個應用程序,通過藍牙傳輸實時傳感器數據,然後有幾個活動可以在此實時數據流上工作,以不同方式顯示它(例如統計數據,直方圖,趨勢圖等)當應用程序退出或移動到背景時,Android關閉服務

我需要維護跨活動的藍牙鏈接,並且我還需要維護將數據接收到跨活動的緩衝區中(例如,您可以查看趨勢圖活動中的數據,然後跳進一個統計活動,沒有它清除數據。)

我如何做到這一點是擴展應用程序,並擁有一個自定義類,它保存所有相關t藍牙對象(藍牙設備,IOstreams)。然後,當用戶通過首頁活動啓動連接時,藍牙連接就會打開並啓動一個服務,從輸入流中讀取數據,將其轉換並存儲到數組列表中。然後任何顯示活動在這個ArrayList上工作。

這很好。但是當應用程序被終止或放入後臺時,我無法解決如何關閉藍牙連接和服務。因爲確保藍牙連接正確關閉非常重要,否則可能很難重新建立連接。

關於迄今爲止我所做的最好的事情是實現一個任務轉換計時器,如後https://stackoverflow.com/a/15573121/3015368所述,並在計時器完成時關閉連接和服務。

我希望有這樣做的更好方法?

回答

0

你可以通過它指向UR服務類意圖停止服務,並調用這個函數,如果你的服務正在運行,它殺死它,如果它不是那麼運行它不會做任何事情

stopService(/* intent name*/) 

u能做到這一點在onPause()方法中,當你的應用程序轉到後臺時自動調用 那麼如果你需要重新啓動服務,你可以調用onResume(),當你的應用程序獲得焦點時它也會自動調用

因此:u需要重寫onPause()和onResume()方法。

+0

問題是,在它們之間切換時,onPause和onResume會在每個Activity上調用。我需要保持連接處於活動狀態,並且只有在應用程序(而不是單個活動)被殺死或後臺關閉時才關閉它。 – Harvs

+0

請轉到此問題[鏈接](http://stackoverflow.com/questions/9099598/android-detect-when-an-application-as-a-whole-not-individual-activities-is-pa)其中的與你的一樣,並嘗試答案 –

相關問題