0

我試圖做LocationManger只給我一個更新


你好,大家好,我試圖創造出後每隔一小時Locationupdate到我的服務器的服務。該代碼似乎工作,當我啓動服務時,它會自動發佈第一個位置更新,之後沒有任何反應。但奇怪的是,有時它有時不不......

問題


所以我需要做什麼在我的代碼,我的LocationManager把每隔一小時locationupdate改變。如果你有一個很好的教程或一些代碼樣本,那將會很棒!

+0

爲什麼不是60 * 60 * 1000而不是100? – 2012-02-28 09:17:20

+0

哦,我計算了這一個假,這不是一個小時。但是,當我把時間設置爲6000(6秒)時,它只給了我一個位置更新... :( – safari 2012-02-28 09:25:04

+0

首先,你必須像....一樣測試1.保持一點,減少時間只需5分鐘,並檢查其工程然後改變你的地理位置,並檢查發生了什麼。然後提高你的時間,1小時後,你必須調用LocationManager來獲取GeoLocation並且不要把它放在OnLocationChanged因爲如果你在相同的位置它不能發送.... – 2012-02-28 09:28:45

回答

3

可能是您的設備轉爲CPU以節省電池電量,並且您的服務不會收到更新。考慮爲更新使用警報,它只是請求一個位置更新(自API 9以來在位置管理器中有一種方法),或者在您的服務中使用WakeLock(如果您只需要更新一次就浪費電池電量每隔一小時)。

看到這裏的報警管理器的詳細信息:http://developer.android.com/reference/android/app/AlarmManager.html

+0

謝謝:D,它的工作! – safari 2012-02-28 10:14:10

0

同上以前的答案,你不應該使用這個requestLocationUpdates。您應該每小時使用一次AlarmManager,然後執行.requestSingleUpdate()。

順便說一句,你給它的時間大部分都是假的,設備只是用它作爲提示,你可以預計頻率遠高於你的要求。

請記住,一小時後,您的應用程序很可能會被android的進程管理器殺死,所以無論如何它會死的。在任何情況下,AlarmManager都是解決這個問題的方法。