Cómo detener la serie de controladores postDelayed
Tengo una serie de manejadores postDelayed. Tengo problemas para establecer un mathode que detiene a los manejadores cuando el usuario está tocando en el botón de detener en cualquier momento que él quiere.
Apreciaré cualquier ayuda alguien capaz de proporcionar. Gracias
- ¿Cómo puedo obtener un contenido de recursos desde un contexto estático?
- ¿Cómo puedo crear una lista de objetos en Java
- RxJava / RxAndroid - maneja varios cambios de EditText
- Android - cómo agregar @hide anotación en mi proyecto
- Dormir un hilo hasta que un evento sea asistido en otro hilo
while (!lessonIsRunning) { Handler handler0 = new Handler(); handler0.postDelayed(new Runnable() { @Override public void run() { plate1.setVisibility(ImageView.VISIBLE); plate2.setVisibility(ImageView.VISIBLE); plate3.setVisibility(ImageView.VISIBLE); } }, 6000); Handler handler1 = new Handler(); handler1.postDelayed(new Runnable() { @Override public void run() { apples1.setVisibility(ImageView.VISIBLE); } }, 9000); Handler handler2 = new Handler(); handler2.postDelayed(new Runnable() { @Override public void run() { plus1.setVisibility(TextView.VISIBLE); } }, 9250); } public void stopLesson(View V){ }
- ¿Hay alguna manera de liberar una cámara de diferentes actividades después de adquirirlo de una actividad diferente.?
- Modificación inesperada del almacenamiento de contenido de Android Studio
- Hacer una aplicación de Android que no se puede desinstalar / eliminar
- Android detectar si constructor llamado en modo de diseño?
- ANDROID: No se puede resolver el método getSupportActionBar ()
- Compruebe si una ruta representa un archivo o una carpeta
- Escritura de pruebas síncronas para Rx v2 Flowable
- Carga el sonido de la memoria en Android
En lugar de escribir la tarea Runnable de manera anónima debes definirla con un nombre, para que más tarde tengas un enlace a ella para eliminarla:
//there is no need for multiple handlers //handler must be declared outside all functions, in order for you to use it everywhere. Handler handler = new Handler(); Runnable myFirstTask = new Runnable (){ @Override public void run() { plate1.setVisibility(ImageView.VISIBLE); plate2.setVisibility(ImageView.VISIBLE); plate3.setVisibility(ImageView.VISIBLE); } }; Runnable mySecondTask = new Runnable(){ @Override public void run() { plus1.setVisibility(TextView.VISIBLE); } }; Runnable myThirdTask = new Runnable(){ @Override public void run() { apples1.setVisibility(ImageView.VISIBLE); } } //you can put different tasks on the same handler object while (!lessonIsRunning) { handler.postDelayed(myFirstTask,6000); handler.postDelayed(mySecondTask,9250); handler.postDelayed(myThirdTask,9000); } public void stopLesson(View V){ //notice that you don't need these, because the handlers are not recursive //you don't have lines "handler.postDelayed(sameTask,someTime);" //in your run Method of the runnable if(handler!=null){ handler.removeCallbacks(myFirstTask); handler.removeCallbacks(mySecondTask); handler.removeCallbacks(myThirdTask); //if this method is inside onPause or onDestroy add this line as well: handler=null; } }
puedes dar
handler0.removeCallbacksAndMessages(null); handler1.removeCallbacksAndMessages(null); handler2.removeCallbacksAndMessages(null);
un intento. El documento dice que cuando envía un token nulo se eliminan todas las devoluciones de llamada y el mensaje.
- Cómo puedo obtener respuesta en cadena de byte
- Cómo obtener los ajustes de Bluetooth ¿Conectar y sincronizar la pantalla con la intención?