wunderlist work trabajo temporizador extension cronometro chrome addon android timer onresume timertask onpause

android - work - Cómo pausar y reanudar una tarea de temporizador/temporizador



work timer (2)

Así es como lo hice. Agregue pauseTimer boolean donde sea que tenga lugar la pausa (quizás para el oyente del botón) y no cuente el temporizador si es verdadero.

private void timer (){ Timer timer = new Timer(); tv_timer = (TextView) findViewById(R.id.tv_locationTimer); countTimer = 0; timer.scheduleAtFixedRate(new TimerTask() { @Override public void run() { runOnUiThread(new Runnable() { @Override public void run() { String s_time = String.format("%02d:%02d:%02d", countTimer / 3600, (countTimer % 3600) / 60, countTimer % 60); tv_timer.setText(s_time); if (!pauseTimer) countTimer++; } }); } }, 1000, 1000); }

Tengo una animación en mi aplicación de Android que muestra un flash de colores de TextView. He utilizado un método TimerTask, Timer y Runnable para implementar esto. Lo que debo hacer es detener el hilo cuando un usuario deja la aplicación durante esta animación en onPause (), y reanudar el hilo cuando el usuario vuelve a la aplicación en onResume (). El siguiente es el código que he implementado, pero no funciona (las piezas onPause () y onResume ()), y no entiendo por qué. He leído algunas otras publicaciones sobre asuntos similares, pero no me han ayudado a averiguar qué hacer en mi situación. He leído que las Tareas de Timer están desactualizadas, y probablemente debería usar un método ExecutorService; No me queda claro cómo implementar esta función.

...timerStep5 = new TimerTask() { @Override public void run() { runOnUiThread(new Runnable() { @Override public void run() { if (b5) { cashButton2SignalText.setBackgroundColor(Color.RED); cashButton2SignalText.setTextColor(Color.WHITE); b5=false; } else { cashButton2SignalText.setBackgroundColor(Color.WHITE); cashButton2SignalText.setTextColor(Color.RED); b5=true; } } }); } }; timer5.schedule(timerStep5,250,250); } public void onPause(){ super.onPause(); timerStep5.cancel(); } public void onResume(){ super.onResume(); timerStep5.run(); }


Después de cancelar TimerTask , no se puede ejecutar de nuevo, debe crear una nueva instancia.

Lea los detalles aquí:

https://.com/a/2098678/727768

Se recomienda ScheduledThreadPoolExecutor para el código más reciente, ya que maneja los casos, como las excepciones, y la tarea lleva más tiempo que el intervalo programado.

Pero para tu tarea, TimerTask debería ser suficiente.