как я могу вызывать функцию каждые 10 секунд?

Я хочу сделать приложение, которое вызывает функцию например каждые 10 сек.

Я написал такой код:

Handler ha=new Handler();
ha.postDelayed(new Runnable() {
    @Override
    public void run() {
        //call function

    }
}, 10000); 

но моя функция вызывает только один раз в 10 сек после компиляции этого кода.

Как я могу это исправить?

5 ответов


делай так:

final Handler ha=new Handler();
ha.postDelayed(new Runnable() {

    @Override
    public void run() {
        //call function

        ha.postDelayed(this, 10000);
    }
}, 10000);

используйте комбинацию Timer и TimerTask такой:

int delay = 0; // delay for 0 sec. 
int period = 10000; // repeat every 10 sec. 
Timer timer = new Timer(); 
timer.scheduleAtFixedRate(new TimerTask() 
{ 
    public void run() 
    { 
        //Call function
    } 
}, delay, period); 

также не забудьте использовать runOnUiThread() Если вы хотите изменить пользовательский интерфейс.


похоже, что таймер и TimerTask-это то, что вы ищете

Timer timer = new Timer();

TimerTask timerTask = new TimerTask() {       
    @Override
     public void run() {
         //your code
     });
}
    };

timer.schedule(timerTask, 0, 10000);

использовать ниже код.

Timer myTimer = new Timer();
            myTimer.schedule(new TimerTask() {
                @Override
                public void run() {
                    //your function
                }
            }, 10000);

есть несколько альтернативных способов сделать это. Лично я предпочитаю использовать ScheduledExecutorService: