как я могу вызывать функцию каждые 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: