Android, detención y reanudación de devoluciones de llamadas del manejador

Tengo un manejador que estoy usando de la siguiente manera:

handler.postDelayed(Play, 1000); 

Cuando se llama a mi aplicación onPause () antes de hacer esto, necesito pausarlo y decirle que no realice el "postDelayed" hasta que reanude.

¿Es esto posible, o hay una manera alternativa?

Mi problema es que cuando onPause () se llama pausa el audio (SoundManager), pero si este handler.postDelayed se llama después de eso, el audio no se detendrá y continuará jugando con mi aplicación en segundo plano.

 @Override public void onPause() { Soundmanager.autoPause() } 

Pero después el postDelayed después de 1000ms comienza el jugar audio otra vez.

¿Has probado con:

 @Override public void onPause() { handler.removeCallbacks(Play); Soundmanager.autoPause() } 

Ale

Necesita subclasificar el Handler e implementar los métodos de pausa / reanudación de la siguiente manera (luego simplemente llame a handler.pause() cuando quiera pausar el manejo de mensajes y llame a handler.resume() cuando desee reiniciarlo):

 class MyHandler extends Handler { Stack<Message> s = new Stack<Message>(); boolean is_paused = false; public synchronized void pause() { is_paused = true; } public synchronized void resume() { is_paused = false; while (!s.empty()) { sendMessageAtFrontOfQueue(s.pop()); } } @Override public void handleMessage(Message msg) { if (is_paused) { s.push(Message.obtain(msg)); return; }else{ super.handleMessage(msg); // otherwise handle message as normal // ... } } //... } 
  • Conversión entre mensaje y cadena en android?
  • Cómo quitar todas las devoluciones de llamada de un controlador?
  • ¿Dónde puedo crear y usar ScheduledThreadPoolExecutor, TimerTask o Handler?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.