2010-08-28 58 views
3

我有下面的代碼的TimerTask:的LocationManager requestLocationUpdates和Android的

if (gps_enabled) { 
     Log.e("$$$$$$$$$$$$$$", 
       "GPS is enabled requestion location updates... interval value is: " 
         + interval); 
     lm.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, 
       locationListenerGps); 
    } 
    else{ 
     if (network_enabled) { 
      Log.e("$$$$$$$$$$$$$$", 
        "Network is enabled requestion location updates... interval value is: " 
          + interval); 
      lm.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 0, 
        0, locationListenerNetwork); 
     } 
    } 

與代碼我可以得到的位置(!至少使用網絡供應商(在另一篇文章的另一個問題)) 我想以每隔一小時定期接收一次通知,但將參數傳遞給requestLocationUpdates並不能保證間隔將得到維持(至少我的測試顯示出來了,因爲我預計每分鐘更新一次,但得到了很多更新,而不是一個!) 所以我想使用timerTask並安排它,我現在有

timer1.scheduleAtFixedRate(new TimerTask() { 
     @Override 
     public void run() { 
      getLocation(); 
     } 

    }, 0, 180000);// 3 minutesr... 

其中的getLocation是我以前被稱爲調用的方法,但是當計時器調用該方法,然後什麼也沒有發生,日誌停留在這一點上

Log.e("$$$$$$$$$$$$$$", 
        "Network is enabled requestion location updates... interval value is: " 
          + interval); 

,我從來沒有收到通知我的位置。 任何想法?

+0

有人嗎?這真的很奇怪,它讓我發瘋。爲什麼我從timerTask調用它們時無法獲取位置更新? – maxsap 2010-08-28 19:07:23

回答

7

好了,我花了一段時間,但我找到了解決方案,因爲文檔說你只能從位置管理器請求位置更新從一個循環線程,這意味着當調用定時器任務時,你必須獲得消息並將消息發送給處理程序,處理程序將負責請求位置更新。

相關問題