Hacer un temporizador de intervalo en Java android
Tengo planes para crear una aplicación de intervalo utilizando temporizadores. Debería ser sólo el más básico Así que voy a tener que añadir un poco más cuando he entendido los conceptos básicos. Lo que quiero lograr es seleccionar el número de minutos que un intervalo debe durar, sin embargo, cuántas veces este intervalo debe ir. Como un intervalo que dura 1 minuto y va 8 veces. La pregunta es qué cronómetro es mejor utilizar? Me he probado en el Android Countdown Timer y parece que funciona. ¿Pero hay otro que es mejor?
- Android relanzando temporizadores después de que se cancelen
- PostAtTime no desencadena
- ¿Cómo usar Android AlarmManager con intervalos pequeños como 1 minuto?
- OnPause / onResume problemas de actividad
- ¿Cómo cambiar el retraso del hilo de sueño / temporizador en android durante el tiempo de ejecución?
- Android: ejecuta un hilo repetidamente dentro de un temporizador
- Eliminación del fondo de una animación de marco en Android
- Use CountDown Timer o rodar mi propio basado en Handler en Android
- ¿Cómo se utiliza un TimerTask para ejecutar un hilo?
- Fiabilidad del método postDelay de Android
- Manejador o temporizador android
- Temporizador en segundo plano
- ¿Cómo implementar una pantalla de bienvenida con una barra de progreso? androide
Siempre recomendaría usar un Handler
.
Es un poco más de trabajo que las clases incorporadas, pero me parece que es mucho más eficiente y tienes más control sobre ella.
El Handler es una clase que manejará la ejecución de código sobre un Looper
/ Thread
específico por defecto, el Thread es creado en, De lo contrario puede especificar donde el Handler ejecuta su código pasando el Looper
al constructor Handler
como – new Handler(Looper.getMainLooper());
La razón por la que recomendaría el looper es porque usted tiene una mayor flexibilidad de control, ya que es una abstracción ligeramente más baja sobre los métodos TimerTask
.
Generalmente son muy útiles para ejecutar código a través de subprocesos. Por ejemplo, útil para canalizar datos a través de subprocesos.
Los dos usos principales son:
public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); final Handler h = new Handler(); h.postDelayed(new Runnable() { private long time = 0; @Override public void run() { // do stuff then // can call h again after work! time += 1000; Log.d("TimerExample", "Going for... " + time); h.postDelayed(this, 1000); } }, 1000); // 1 second delay (takes millis) }
¡Uso simple!
O puede usar mensajes que reducen la creación de objetos. Si usted está pensando en la actualización de alta velocidad de la interfaz de usuario, etc – esto reducirá la presión sobre el recolector de basura.
class MainActivity extends Activity { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); MyTimers timer = new MyTimers(); timer.sendEmptyMessage(MyTimers.TIMER_1); timer.sendEmptyMessage(MyTimers.TIMER_2); } public static class MyTimers extends Handler { public static final int TIMER_1 = 0; public static final int TIMER_2 = 1; @Override public void handleMessage(Message msg) { switch (msg.what) { case TIMER_1: // Do something etc. Log.d("TimerExample", "Timer 1"); sendEmptyMessageDelayed(TIMER_1, 1000); break; case TIMER_2: // Do another time update etc.. Log.d("TimerExample", "Timer 2"); sendEmptyMessageDelayed(TIMER_2, 1000); break; default: removeMessages(TIMER_1); removeMessages(TIMER_2); break; } } } }
Obviamente esto no es una implementación completa, pero debería darle una ventaja.
- Cómo hacer que se deslice para desbloquear el botón en android
- Parámetro doble con 2 dígitos después del punto en strings.xml?