2012-02-25 42 views
2

我在決定實現我的後臺服務任務的方式時感到有點困惑。以下是我的服務模樣。在Android服務的單獨線程中運行位置更新

的Android服務(有兩個任務在後臺做)

  1. 註冊LocationListener的,當新的位置接收,處理它決定最佳位置與否。

  2. 每隔10分鐘向服務器輪詢一次,以檢查服務器端是否更改了遠程數據庫。

現在我不希望這兩個任務爭取時間和資源。所以我打算同時運行這兩個。對於輪詢到服務器我使用重複的timerTask,但對於LocationListener我應該使用什麼?

可以使用java runnable來處理具有邏輯的新位置並將位置更新到服務器嗎?如果我的想法沒問題,請提供一些示例代碼,以顯示如何在新線程中執行位置更新。

如果您認爲我目前的想法有任何問題,請根據我的要求提出一些新建議。

回答

1

我什麼也看不到,那建議你可以不註冊,在你的服務運行一個LocationListener的,在文檔中: http://developer.android.com/reference/android/location/LocationListener.html http://developer.android.com/guide/topics/location/obtaining-user-location.html

這是一個回答類似的問題,你應該看它: Android service with locationListener callbacks

「現在我不希望這兩個任務爭奪時間和資源,所以我打算同時運行這兩個任務。」 ^模糊的陳述,然後是看似違反直覺的計劃。如果您可以具體說明「時間」和「資源」的含義,那麼您可能會收到一些有用的反饋意見。

簡短回答: 是的。註冊一個LocationListener,當位置更新可用時它將被調用。這是一個LISTENER,因爲無論您註冊什麼,它都會被調用 - 您不需要自己調用它。最佳做法是不要在TimerTask上重複使用,而是使用一次性鏡頭,通過每次打勾調用的代碼重置該鏡頭。

至於免費的代碼,也許你應該聘請某人爲你辛苦工作?它會在Android社區創造另一份工作,並減輕您嘗試某些您不熟悉的事情時涉及的風險。否則,請盡你所能實施,並按照您認爲最好的方式實施,回到如果/遇到特定問題時堆棧溢出。

+0

straya:謝謝你的回覆。但是從你的回答看來,你認爲任務和位置更新任務是相同的。目前我沒有使用TimerTask作爲位置。但計時器任務用於從遠程Web服務器獲取一些數據庫更新。可能是運行timerTask時我的位置監聽器被調用。這就是爲什麼我想要實現這個線程。如果你可以評論我的新澄清..它會對我有幫助... – 2012-02-25 03:50:47

+0

不,我不認爲他們是一樣的。如果你認爲這就是我根據我寫的內容所做的想法,那麼你的目的就是錯誤的。重新閱讀我非常小心的話。註冊聽衆,讓它做到這一點。設置TimerTask,讓它做它的事情。如果他們在同一時間運行,你會關心什麼(讓我覺得你對重要信息不屑一顧......) – straya 2012-02-25 04:11:19

相關問題