2012-07-21 167 views
1

我註冊了一個location listener,它將使用NETWORK_PROVIDER接收位置更新。如果activity處於前景中,偵聽器會收到位置更新。如果我離開應用程序,過了一段時間,它會停止接收位置更新。這有點奇怪......即使沒有任何活動在堆棧上,它是不是應該接收位置更新?如果我回到我的應用程序,監聽器再次開始接收位置更新。Android LocationListener停止接收位置更新

或者我做錯了什麼?即使我的任何活動都未處於活動狀態(無論是在前臺還是在堆棧中),建議使用哪種編程模型來接收位置更新?

還有其他一些方法可以接收位置更新(使用未決意圖),但如果我不打開GPS,則不會觸發。

+0

如果您想要在活動休眠時接收位置,則需要喚醒鎖和服務。 – Shine 2012-07-22 01:20:04

+0

你的意思是我應該寫一個服務?該服務應實現LocationListener? 你是什麼意思的喚醒鎖? 任何鏈接或您提到的例子? – 2012-07-22 01:30:38

+0

我讀過關於喚醒鎖。我不想要喚醒鎖。因爲我不想讓設備醒來。該設備的行爲正常。用戶應該能夠鎖定屏幕,如果他想。 讓聽衆獲得服務會更有意義。但我不確定這是否是正確的做法。 – 2012-07-22 01:38:06

回答

2

在後臺的活動將最終被破壞,你沒有任何保證,一旦停止它將繼續接收位置更新。 Android中的活動不應該像這樣使用。

您可以按照建議使用帶喚醒鎖的服務,但保持設備清醒狀態將快速耗盡電池電量。

我推薦你由Reto Meier(IO 2011)的this talk,他在那裏談論不同的策略以獲得一個新的位置。這裏是the code

+0

感謝您與視頻的良好關聯。談話中涵蓋了很多重要的話題。關於接收位置更新的部分是從大約20分50秒到26分00秒。 – 2013-01-06 16:30:54