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

Timer timer = new Timer ();
TimerTask gpsTask = new TimerTask () {
    @Override
    public void run() {
        // TODO Auto-generated method stub
        gpsPlotter();
    }
};

// schedule the task to run starting now and then every hour...
timer.schedule(gpsTask, 0, 200);


private void gpsPlotter(){
        // TODO Auto-generated method stub
            try{
                BeaconHandler dbg = new BeaconHandler(Ping.this);
                List<Beacon> beacons = dbg.getAllBeacons();
                int activecheck = 0;
                for(Beacon bn : beacons){
                    activecheck = activecheck + bn.getStatus();
                }
                //db.close();
                if(activecheck > 0 && updateset == 0){
                    pinger.requestLocationUpdates(LocationManager.GPS_PROVIDER, 60000, 10, reciever);
                    updateset = 1;
                    Log.d("GPS RESET", "Listener Set");
                }
                else if(activecheck == 0 && updateset == 1){
                    pinger.removeUpdates(reciever);
                    updateset = 0;
                    Log.d("GPS RESET", "Listener Removed");
                }
                else{
                    Log.d("GPS RESET", "No Modifications");
                }
            }
            catch(Exception e){
                Log.e("GPS RESET ERROR", e.getMessage(), e);
            }
        }
0
TheHamstring 7 Авг 2013 в 06:18

1 ответ

Лучший ответ

Я нашел свою проблему. Когда я начинаю запрашивать обновления местоположения, мне нужно было зарегистрировать его вот так.

pinger.requestLocationUpdates(LocationManager.GPS_PROVIDER, 60000, 10, reciever, getMainLooper());
0
TheHamstring 8 Авг 2013 в 15:35