0

我正在開發一個應用程序,該應用程序每3小時根據當前位置檢查天氣。我使用FusedLocationProviderApi獲取位置,並將pendingIntent用於啓動IntentService的BroadCastReceiver。使用FusedLocationProviderApi啓動定期位置更新或使用AlarmManager代替

在FusedLocationProviderApi中,您可以指定創建LocationRequest時的間隔期。因此,如果我將間隔指定爲3小時,並將最快間隔指定爲3小時(我不想在此之前獲得更新),那麼如果在位置更新的時候位置不可用,會發生什麼情況?

我還會在預定時間獲取位置更新意向嗎?如果位置不可用,我想使用最後一個已知位置,但是我需要確定我仍然在預定的時間獲得了PendingIntent。

或者使用警報管理器來處理定期工作並請求IntentService中的位置更新更好嗎?

感謝

回答

0

在FusedLocationProviderApi您可以在您創建的LocationRequest指定的間隔期。因此,如果我將間隔指定爲3小時,並將最快間隔指定爲3小時(我不想在此之前獲得更新),那麼如果在位置更新的時候位置不可用,會發生什麼情況?

在這個scnerio設備必須保持清醒,以保持您的位置請求。所以這意味着你必須有一個不間斷的(理論上)後臺服務,並且還要有部分喚醒鎖。他們聽起來不太好。

相反,您可以參考設置爲每3小時醒來的AlarmManager方法。然後想法就像下面

  • 設備醒來
  • 使位置請求儘快(設置間隔值爲零)
  • 繼續接收位置(也做你的實際工作)後睡覺
+0

謝謝。我認爲如果設備處於睡眠模式(不必在等待期間保持喚醒狀態),那麼使用PendingIntent將位置更新應用到WakefulBroadcastReceiver(在IntentService中啓動,該請求會請求位置的天氣)。 – stefanb

+0

您對FusedLocationProviderApi定期報告的可靠程度有任何經驗嗎?它與AlarmManager一樣可靠嗎? – stefanb

+0

請檢查這個庫[cwac-locpoll](https://github.com/alexbirkett/cwac-locpoll)。這正是您需要的,但使用LocationManager。您可以實施融合位置提供商而不是舊位置提供商。 – Blackkara

相關問題