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

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

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

Мел.

В 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

person Mel    schedule 24.08.2011    source источник


Ответы (2)


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

person darma    schedule 24.08.2011

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

person Dan S    schedule 24.08.2011