Функции таймер автоматически останавливается, когда деятельность приостановлена?


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

Если он действительно работает, когда приостановлен, как я могу его предотвратить?

Мэл.

в 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 4

2 ответа:

В этом случае вы должны реализовать ваш объект Timer как элемент экземпляра вашего действия, создать и запустить его в методе onResume() вашего действия и остановить его в методе onPause() этого действия ; таким образом, он будет работать только тогда, когда действие находится на переднем плане.

В большинстве случаев потоки продолжают выполняться, когда действие находится в фоновом режиме. Система оставляет за собой право в любое время прекратить действие и связанный с ним процесс. Более подробно смотрите раздел Управление жизненным циклом деятельности в руководстве по разработке.