Функции таймер автоматически останавливается, когда деятельность приостановлена?
У меня есть таймер, который заставляет функцию работать каждую минуту, в минуту. Когда действие приостановлено, таймер будет продолжать работать. Я не хочу, чтобы он работал, так как в этом нет необходимости.
Если он действительно работает, когда приостановлен, как я могу его предотвратить?
Мэл.
в onCreate () у меня есть
//Respond to clock changing every minute, on the minute
myTimer = new Timer();
GregorianCalendar calCreationDate = new GregorianCalendar();
calCreationDate.add(Calendar.MILLISECOND, (-1*calCreationDate.get(Calendar.MILLISECOND)));
calCreationDate.add(Calendar.SECOND, -1*calCreationDate.get(Calendar.SECOND));
calCreationDate.add(Calendar.MINUTE, 1);
//Update every one minute
myTimer.scheduleAtFixedRate(new TimerTask() {
@Override
public void run() {
timerMethod();
}
}, calCreationDate.getTime(), 60000);
внутри класса (вне onCreate ()) у меня есть:
//Update the clock every minute
protected void timerMethod() {
this.runOnUiThread(Timer_Tick);
} //end TimerMethod
private Runnable Timer_Tick = new Runnable() {
public void run() {
int intTpHour = tpTimePicker.getCurrentHour();
int intTpMinute = tpTimePicker.getCurrentMinute();
displayMyTime(intTpHour, intTpMinute);
}
}; //end Runnable Timer Tick
2 ответа:
В этом случае вы должны реализовать ваш объект
Timer
как элемент экземпляра вашего действия, создать и запустить его в методеonResume()
вашего действия и остановить его в методеonPause()
этого действия ; таким образом, он будет работать только тогда, когда действие находится на переднем плане.
В большинстве случаев потоки продолжают выполняться, когда действие находится в фоновом режиме. Система оставляет за собой право в любое время прекратить действие и связанный с ним процесс. Более подробно смотрите раздел Управление жизненным циклом деятельности в руководстве по разработке.