我正在從事這個項目,我需要位置更新和數據上傳,即使主應用程序不在前臺。我正在考慮將所有位置和網絡功能放在一個服務中(XService,參數爲參數),並在同一進程中使用廣播(不能訪問其他應用程序)在活動(主)和XService之間進行通信。LocationManager和網絡服務
我還沒有寫代碼,但工作流轉是這樣的:
1.主 - 啓動。在onCreate中,啓動一個新的線程,並在其上實例化並綁定XService。
2. Main - 登錄畫面。獲取數據, 將其打包在Intent中並廣播到XService。
3. XService - 接收廣播,解包意圖。安裝套接字和數據流。設置 LocationManager進行更新。廣播到主要網絡是 準備好。每次上傳數據LocationManager更新。
4.主要 - 收到網絡就緒廣播後,準備初始化和廣播的意圖。
5. XService - 接收 初始化請求廣播,解包,執行網絡任務, 廣播響應。
6.根據用戶 互動和任何定時更新重複廣告噁心。
x。 Main - 在註銷時,向XService廣播 。
x + 1。 XService - 發送註銷信息到 服務器,關閉套接字,廣播到Main,它正在優雅地退出 ,然後stopSelf()。
x + 2 Main - 完成註銷 程序。
我的主要問題是 - 這是正確的方式嗎?
另一個問題是:當XService將位置更新廣播到Main,但Main停止(即未在前臺運行)時會發生什麼情況?我認爲,由於Main處於停止狀態,因此MainRedReceiver沒有實例化,所以廣播本質上什麼都不做。這種未被廣播的廣播如何影響(或不是,視情況而定)XService或一般的過程/設備?
回覆:線程服務,而不是主要:好的建議,謝謝。它肯定會讓線索更容易跟蹤。 我假設你的意思是我應該註銷接收器onStop(而不是onStart)。當活動啓動時,它可以向服務部門要求提供所需的信息。 Messenger類看起來很有趣。我將不得不做更多的研究,以便更好地滿足我的需求。 – LiveMynd 2014-08-28 04:46:33
啊,是的,這就是我的意思。是的,這個信使類非常棒,我用它在這個應用程序中不斷更新來自服務的位置數據的活動。您是否打算使用位置服務或locationClient等新位置apis(現在已棄用)? – 2014-08-28 05:06:32
實際上,我的應用程序是互聯網隱私研究的一部分,因此計算機參與者越少,分析數據就越容易。因此,我將使用簡單的android.location庫和類,因此我不必將Google Play服務(包含位置服務)納入我的研究範圍。 – LiveMynd 2014-08-28 06:48:31