2010-08-28 54 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

好了,我花了一段时间,但我找到了解决方案,因为文档说你只能从位置管理器请求位置更新从一个循环线程,这意味着当调用定时器任务时,你必须获得消息并将消息发送给处理程序,处理程序将负责请求位置更新。

相关问题