как исправить Timertask работает только один раз? - PullRequest
1 голос
/ 03 июня 2019

Я пытаюсь узнать свое текущее местоположение каждую 1 секунду. Метод getlocationCoordinate позволяет вернуть мою текущую широту и долготу.

Итак, я реализовал таймерную задачу, которая должна запускаться каждую 1 секунду и возвращать мое текущее местоположение, но таймерная задача запускается только один раз, как я могу решить эту проблему?

    Timer timer= new Timer();
    timer.schedule(new TimerTask() {
        @Override
        public void run() {
            Looper.prepare();


            System.out.println(" show me current location " + getlocationcoordinate(getApplicationContext()));
            runOnUiThread(new Runnable() {
                public void run() {
                    Toast.makeText(MainActivity.this, "current location" +getlocationcoordinate(getApplicationContext()), Toast.LENGTH_SHORT).show();
                }
            });
            Looper.loop();


        }
    },0,1000);

1 Ответ

1 голос
/ 03 июня 2019

по какой-то причине таймер не работает так, как нам хотелось бы, вы можете использовать обработчик

 private Handler handler;
 private Runnable runnable;


  handler = new Handler();
                handler.postDelayed(runnable, 1000);
                runnable = new Runnable() {
                    @Override
                    public void run() {
                        try{
                            System.out.println(" show me current location " + getlocationcoordinate(getApplicationContext()));
                        }
                        catch(Exception e){
                            e.printStackTrace();
                        }
                        handler.postDelayed(this, 1000); //start again
                    }
                };

источник здесь

...