Трек GPS каждые 10 минут, используя таймер в Android - PullRequest
1 голос
/ 07 февраля 2011

Я занимаюсь разработкой приложения для Android и использую сервис, который отслеживает местоположение через GPS каждые 10 минут.Но когда я помещаю слушатель местоположения в задачу таймера, он выдает исключение:

Невозможно поместить код в поток, который не вызвал looper.prepare().

* 1007есть понимание этой проблемы?

Ответы [ 2 ]

1 голос
/ 07 февраля 2011

Вам не нужно запускать службу для получения locationUpdate каждые 10 минут, вместо этого делайте что-то вроде этого

 mLocManager = (LocationManager)getSystemService(Context.LOCATION_SERVICE);
 mLocManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 600000, 0, mLocListener);

, это будет автоматически отправлять обновления слушателю каждые 10 минут

Когда выполучил ошибку, как Лупер.это означает, что вам не разрешено делать что-либо из потока, отличного от основного рабочего потока пользовательского интерфейса.

Что такое код, который вы запускаете и получаете эту ошибку.выполнить код из основного потока пользовательского интерфейса.или создайте объект-обработчик в вашем главном классе с помощью основного потока

 Handler mHandler = new Handler();

Затем в любом другом потоке сделайте что-то подобное

  new Thread(new Runnable(){ public void run(){

           // any of your code
        mHandler.post(new Runnable(){public void run(){

         // the code giving you error Looper
        }});
   }}).start();
0 голосов
/ 07 февраля 2011

Этот метод прост и может обновлять поток пользовательского интерфейса:

      new CountdownTimer(30000, 1000) { 

    public void onTick(long millisUntilFinished) { 
        mTextField.setText("seconds remaining: " + millisUntilFinished / 1000); 
    } 

    public void onFinish() { 
        mTextField.setText("done!"); 
    } 
 }.start(); 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...