Итак, я хочу, чтобы задача выполнялась и продолжала работать после некоторого интервала времени (например, функция JS 'setInterval()
и имеет метод под названием scheduleAtFixedRate
, который в основном делает то же самое . Однако, нет никакого явного механизма pause
или resume
TimerTask.
Пауза/возобновление сценария для TimerTask не работает
Я читал на SO, что когда-Timer
отменяется, она идет в ад.
Я также читал, что обходной путь может быть достигнут.
Это мой код:
Timer t = new Timer();
t1 = new TimerTask() {
@Override
public void run() {
//Do Something like,
a++;
}
};
t.scheduleAtFixedRate(t1, 0L, 300L); /*Pretty basic till this line. Just a TimerTask ddeclaration and execution via a Timer `t`.*/
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (flag == 1) {
t.scheduleAtFixedRate(t1,0,300);//This call says "TimerTask already scheduled," even though purge removed it.
} else {
t1.cancel(); //cancelling the task so that purge does something.
int a = t.purge();//a is 1. Purge worked. TimerTask was removed from the queue.
Log.d("The number of tasks",a+"");//1
flag = 1;
}
}
});
Как это сделать?
Если, однако, ScheduleExecutorService может быть использован, сможет ли кто-нибудь реализовать то, что упоминается в этом комментарии? Pause/Resume ScheduleExecutorService
Выполняется ли ваша задача только между 'onResume()' и 'onPause()', пока ваше приложение видимо и используется? Есть ли причина, по которой он должен работать в фоновом потоке? Запрашивать, потому что вы, возможно, захотите рассмотреть использование «Handler», поскольку использование «Таймера» обычно обескураживается. –
Предположим, что задача запущена. Затем, если вызывается onPause, задача должна приостанавливаться. И удерживайте свою позицию, пока остальная часть приложения остается пригодной для использования. И когда вызывается onResume, он должен продолжать то, что он делает. Как я могу использовать Handler для этого? –
Он ДОЛЖЕН работать на фоне потока. –