我有正在運行作爲前臺服務的Android服務startforeground的LocationManager requestLocationUpdates當設備處於睡眠狀態
startForeground(1234, notification);
在這項服務,我有一個應該運行,每15分鐘可運行的服務:
private Runnable runnable = new Runnable()
{
@Override
public void run()
{
Log.d("maw", "Gps::run");
if (Constants.checkInternet(getApplicationContext())) checkSheet();
handler.postDelayed(this, Constants.REFRESH_TIME);
}
};
當設備連接到internt時,它執行方法checkSheet()。 此方法用服務器檢查某些內容,並根據結果啓動GPS並跟蹤設備的位置。
locationMgr.requestLocationUpdates(LocationManager.GPS_PROVIDER, GPS_TIME, GPS_DISTANCE, this);
現在...在我們的測試中,這一切似乎工作正常。但是用戶有問題,有時他們只能在應該開始記錄之後的幾個小時內看到它們。
現在問題是背後的原因是什麼。 我猜他們不使用他們的設備不亞於我們的設備和裝置進入休眠模式我們的測試設備不會進入,因爲我們使用的設備更加頻繁
一些問題: 對於前臺服務: - 當設備進入某種深度睡眠模式時,Runnable每15分鐘停止一次嗎? - 當設備處於某種深度睡眠模式時,是否無法初始化locationManager.requestLocationUpdates?
爲什麼不使用喚醒鎖? [PowerManager.WakeLock](http://developer.android.com/reference/android/os/PowerManager.WakeLock.html) – Utisevalec 2013-05-07 13:47:48
您應該接受您的回答 – 2013-07-13 21:05:03