2013-04-21 4 views
0

Я пишу программу клиентского сервера, который клиент дает свое местоположение серверу, и сервер показывает это. У меня есть класс, чтобы получить широту и долготу местоположения. У меня есть таймер для извлечения места каждые 2 секунды. Но я получаю эту ошибку: Невозможно создать обработчик внутри потока, который не называется Looper.prepare()Невозможно создать обработчик ... Looper.prepare()

Вот мой таймер внутри метода OnCreate:

time.scheduleAtFixedRate(new TimerTask() { 

@Override 
public void run() { 

GetLocation(); 

} 
}, 0, sampling_interval); 
} 

А вот метод GetLocation:

private void GetLocation(){ 

    gps = new GPSTracker(MainActivity.this);  
    // check if GPS enabled 
    if(gps.canGetLocation()){ 

     double latitude = gps.getLatitude(); 
     double longitude = gps.getLongitude(); 


     Log.d("Latitude", Double.toString(latitude)); 

    }else{ 

     gps.showSettingsAlert(); 
    } 
} 

Проблема: gps = новый GPSTracker (MainActivity.this); Если я поместил эту строку в MainActivity, нет проблем, но проблема в том, что я не получаю обновленное местоположение, я просто получаю такое же местоположение, потому что он создан только один раз. Таким образом, эта строка должна быть внутри метода GetLocation(), который я могу получить обновленным местоположением каждый раз, когда таймер вызывает его.

Любая помощь?

+0

используйте Create Handler в MainActivity и используйте handler.post для вызова вышеуказанного метода, потому что для доступа за пределами MainActivity вам нужен контекст – Pragnani

ответ

0

Это девиз Android: избегите Timer/TimerTask использовать вместо Handler.

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

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