0
我有一個應用程序需要跟蹤我的位置,在讀取傳感器的同時讀取傳感器信息(即當前速度)。該活動還有一個「停止」按鈕,允許用戶取消後臺作業。如果用戶離開並且通知應該允許用戶返回顯示信息的視圖,則數據收集應該繼續。在Android中使用背景到前景的數據的後臺作業
到目前爲止,我有:
- 具有
private static MyService instance
場和一個getter它 - 它設置
instance = this
在onStartCommand(...)
- 它也有當前一個getter服務
- 數據(包裹在對象中)
- 它提供了一個
goForeground()
方法,該方法調用startForeground(...)
並且示出了通知(goBackground()
確實倒數)
- 一個活動
- 調用在
onCreate(...)
MyService.getInstance()
,如果返回null它創建具有startService(someIntent)
- 一個
updateViews()
方法拉動從所述數據中的服務服務並使用處理程序調度自己以每500ms更新視圖
- 調用在
這有效。 但是我很確定這不是推薦的方式。這真是醜陋,所有對getInstance()
返回值的調用都包含在非空檢查中。此外,所有工作都在UI線程中發生(當我向服務添加更多計算時,這肯定會導致問題)。另外,我想擺脫活動輪詢服務的數據。
什麼是推薦方法做到這一點?
Android文檔在這一點上並不十分清楚,我在Google上發現的所有內容都過時或解決了不同的問題。請記住:
- 我的背景工作本質上是無止境的,不會在某個時間點「完成」。只有用戶可以決定這(這排除了的AsyncTask,或不?)
- 我需要從後臺通過一些非原始日期前景
- 我需要控制從活動背景
- 的活動應該能夠「重新連接」的背景下,如果它被關閉並重新打開