Cómo reiniciar un procesador postdelay si interrumpe durante la cuenta regresiva de retardo
Tengo un problema que no puedo resolver. Tengo un botón que cuando chascado cambia la opinión del texto. A continuación, activa un proceso postdelayed
que devuelve el textview
a su texto original después de 2 segundos.
Si postdelay
el botón una vez, y de nuevo dentro de este intervalo de 2 segundos, el postdelay
continuará contando desde la primera pulsación y no se reiniciará a partir de la segunda pulsación. Esto hace que el texto original se muestre cuando quiero que el texto cambiado sea.
- Poner un objeto en el mensaje de Handler
- ¿Cómo iniciar / detener Runnable / Handler?
- SensorManager.registerListener (.., Handler handler), ejemplo por favor?
- ¿Hay alguna clase en Java similar a android.os.Handler en Android?
- Handler postDelayed y Thread.sleep ()
Cada vez que se presiona el botón, se crea un retardo desde esa instancia. Quiero que cancele el postdelay
anterior y comience uno nuevo. Este es mi código hasta ahora pero no está terminado porque no puedo resolver cómo terminarlo (por lo que no funciona).
p1AddL.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { counter1 ++; count1 ++; Handler h = new Handler(); if ('PREVIOUS_DELAY_HAS_STARTED') { h.removeCallbacks(clickButton); h.postDelayed(clickButton, 2000); } else { h.postDelayed(clickButton, 2000); } if (count1 > 0) { lifepointsP1.setText("+" + count1); lifepointsP1.setTextColor(Color.argb(220, 0, 188, 0)); } } }); Runnable clickButton = new Runnable() { @Override public void run() { count1 = 0; lifepointsP1.setTextColor(Color.WHITE); lifepointsP1.setText(counter1); } };
el texto PREVIOUS_DELAY_HAS_STARTED
debe ser algún tipo de método de comprobación y estoy bastante seguro de que necesito algo entre los comandos h.removeCallbacks
y h.postDelayed
bajo ese texto.
Si es una forma más sencilla / mejor manera de escribir este método para que funcione por favor hágamelo saber. He intentado tantas maneras y siento que estoy muy cerca aquí.
- Glide no animar ImageView cargado desde la caché
- Ejecutar todos los runnables programados (postDelayed) en Handler
- Pausa con handler y postDelayed en android
- Servicio Android-Comunicación de 2 vías
- Manipuladores y pérdidas de memoria en Android
- Android handler .postdelay () cada minuto cambio de hora en el reloj?
- No se puede crear el controlador dentro de hilo que no ha llamado Looper.prepare ()
- Mejor práctica: Actualizar ArrayAdapter continuamente
removeCallbacks no hará nada si clickButton no está registrado en h. Así que simplemente puede reemplazar
if ('PREVIOUS_DELAY_HAS_STARTED') { h.removeCallbacks(clickButton); h.postDelayed(clickButton, 2000); } else { h.postDelayed(clickButton, 2000); }
con
h.removeCallbacks(clickButton); h.postDelayed(clickButton, 2000);
- Android sqlite – Cómo administrar un valor entero en la cláusula where
- Cómo jugar la radio en línea de streaming en Android