2010-08-28 3 views
3

У меня есть следующий код:LocationManager requestLocationUpdates и TimerTask в андроиде

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 не гарантирует, что интервал будет поддерживаться (по крайней мере, что мои тесты показали, так как я ожидал обновления каждую минуту, но получил много обновлений вместо один!) , поэтому я подумал об использовании таймераTask и запланировать его, теперь у меня есть

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

ответ

7

ОК занял некоторое время, но я нашел решение этого вопроса, поскольку в документации говорится, что вы можете запрашивать обновления местоположения только из диспетчера местоположений из потока петлителя, а это значит, что при вызове задачи таймера вы должны получить сообщение и отправить сообщение обработчику, и обработчик будет отвечать за запрос обновлений местоположения.

Смежные вопросы