2011-03-11 63 views
1

我有一個嚴重的問題。在Android中調用requestLocationUpdates函數時,GPS將偵聽當前位置。但是如果手機在室內(比如地下),那麼GPS將繼續收聽,直到一個位置被固定。Android請求位置更新保留在

這在測試時會殺死我的電池...有沒有什麼辦法可以在2分鐘的時間內設置removeUpdates位置?

感謝

+0

如果您使用的是嵌入式的MapView與MyLocationOverlay,在這裏看到:http://stackoverflow.com/a/10977854/1071942 –

回答

1

我的建議:

  1. 創建一個使用一個處理器
  2. 使用sendMessageDelayed觸發處理程序類每5秒
  3. 爲message.obj保持每次幾秒鐘的計數器和處理程序是所謂的增量由5
  4. 的message.obj當message.obj達到120,那麼你知道2分鐘的路程了,你可以使用中的removeUpdate()

  5. onLocationChanged時()被調用,然後使用removeMessages()的處理程序,並重新啓動sendMessageDelayed()與該對象含有0

LOVE處理程序!!

3

添加你自己的邏輯來調用removeUpdates()後兩分鐘內沒有收到更新。沒有內置的超時機制,但創建你自己的應該不是特別困難。

+0

唯一超時機制我能想到的是在後臺運行的機器人服務2分鐘後處理它..但我認爲這是非常低效的。感謝您的迴應,我買了你的書,但我沒有看到任何關於高效超時機制的地方.. 你能建議嗎?謝謝 – Yudhistre

+0

查看上面..謝謝 – Yudhistre

+0

@yuhistre:不知道什麼組件調用'requestLocationUpdates()'和什麼組件託管'LocationListener',這是不可能給你的建議。 – CommonsWare