Запланируйте функцию, сделайте что-нибудь даже на функции цикла - PullRequest
1 голос
/ 08 ноября 2019

Эй, я думаю о коде, который запускает функцию каждую 1 минуту, но в циклической функции, каждый раз, когда я делаю это, она планирует запуск функции 55555 раз без остановки и выполняет их все одновременно

Что я хочу сделать, так это заставить его делать это каждую 1 минуту, только один раз, даже для функции цикла как onGpsStatusChanged или слушателя местоположения

Студия Android ...

Ответы [ 3 ]

0 голосов
/ 08 ноября 2019

Я не на 100% уверен, что вы имеете в виду, так что вы могли бы разместить код? В любом случае я использую это для запуска timerTick каждую минуту ...

        final Handler handler = new Handler();
        final Runnable r = new Runnable() {
            public void run() {
                timerTick();
                handler.postDelayed(this, 1000 * 60);
            }
        };
        this.runOnUiThread(r);
0 голосов
/ 08 ноября 2019

запускает функцию каждую 1 минуту, но в циклической функции, каждый раз, когда я делаю это, она запускает 55555 раз без остановки и выполняет их все одновременно

Я бы также использовал JobScheduler или TimerTick на Android Studio.

final val TIME_PERIOD = TimeUnit.Milliseconds(60000)

try {
   scheduleMethod() {
     Handler(Looper.getMainLooper()).postDelayed(
       Runnable {
         execute()
       }, TIME_PERIOD)
    }
} catch (InterruptedException e) {
    e.printStackTrace();
}
0 голосов
/ 08 ноября 2019
  1. Вы можете использовать Android JobScheduler для этой цели. Эта реализация поможет вам опубликовать действие в определенное время или с таймаутами. Прочитайте больше из документации .

. .

Еще один, возможно, простой способ сделать это, он использует Android Handler и функцию последующей задержки. Например

private static final long DELAY = TimeUnit.MINUTES.toMillis(1)

private void startTask() {
   new Handler(Looper.getMainLooper()).postDelayed(new Runnable() {

      @Override
      public void run() {
          /**
           * Your function here, and start task again!
           */
           startTask()
       }

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