GPS не может работать внутри TimerTask - PullRequest
0 голосов
/ 09 января 2011

Я пытаюсь написать приложение для Android, которое получает сигнал GPS с фиксированным интервалом времени, например, каждую 1 минуту.Поскольку функция requestLocationUpdate не совсем это реализует, я попытался использовать задачу для ее выполнения.

public class getGPS extends TimerTask{
     public void run(){
        System.out.println("Running a GPS task");
        locHandler = new locationUpdateHandler();    


        myManager.requestLocationUpdates(provider, 60000, 0, locHandler);


     }
 }


public void LoadCoords(){

     Timer timer = new Timer();
     timer.scheduleAtFixedRate(new getGPS(), 0, 60000);
}

Однако, как я видел, requestLocationUpdates будет работать нормально, если я поместу его в LoadCoords ()но не запустился бы, если бы я поместил его в TimerTask (т. е. не зеленый значок на панели задач, чтобы показать, что GPS ищет решение).

Может кто-нибудь предложить альтернативный подход или псевдокод, или исправить мою ошибку, если таковая имеется?Заранее спасибо.

1 Ответ

0 голосов
/ 09 января 2011

Как говорит doc : Вызывающий поток должен быть потоком Looper, таким как основной поток вызывающего Activity.Другими словами, вы должны вызывать myManager.requestLocationUpdates(provider, 60000, 0, locHandler); из основного потока приложения UI.В вашем случае это не работает с TimerTask, потому что TimerTasks выполняются Timer в отдельном потоке.

Проверьте статью Paining Threading , чтобы найти наиболее подходящее решение.решение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...