¿Hay una manera de cancelar onCompletionListener?

Estoy escribiendo una aplicación con una función de reproducción automática, básicamente como un libro de cuentos. onCompletionListener un reproductor de medios onCompletionListener para cada actividad (página) de modo que cuando la narración se hace, se inicia la siguiente actividad (página). Hay una opción para desactivar la reproducción automática (para que puedas leerla a tu propio ritmo) … pero desactivándola resulta en la actividad -la página actual- "recordando" la llamada anterior onCompletionListener (como se usa el botón de retroceso) para volver a la actividad anterior). Las actividades siguientes (páginas) funcionan bien … ya que la comprobación lógica que inicia el onCompletionListener evita que se ejecute.

También he intentado mover esa comprobación de lógica a onStart() [en lugar de onCreate ] como el menú donde se onCreate la reproducción automática toma la pantalla completa y hace que la actividad anterior (página) ejecute onStop() . Mientras esta configuración mantiene el onCompletionListener de ser ejecutado de nuevo … todavía no "cancelar" el onCompletionListener anterior. Nota: Esto sólo es un problema cuando se ha iniciado una actividad (página) con la autoplay=on .

También he intentado brevemente super.recreate() para esa actividad particular en un intento de "reiniciar" todo (esperemos, incluyendo el onCompletionListener ). Sin embargo, el resultado no fue bastante (la actividad se borró y nunca se reinicializó).

No he incluido ningún código como (a mí) esto es más de una cuestión de procedimiento. 1. ¿Se puede onCompletionListener un onCompletionListener ? ¿Si es así, cómo? 2. Si no, (ya que soy relativamente nuevo en java / android) es el método recreate aceptable / beneficioso para "restablecer" toda la actividad (y el onCompletionListener dentro de ella)?

Tengo como objetivo API 11 y superior. Cualquier pensamiento / crítica constructiva sería apreciada.

si desea cancelar un onCompletionListener anterior, simplemente puede establecer uno nuevo que no hace nada.

Bueno, la forma de "cancelar" es utilizar el método de liberación. Y debe considerar hacerlo cuando abra una nueva página (actividad)

aquí hay algunas posibles soluciones:

  1. para el onDestroy, use setOnCompletionListener (null).

  2. en el cambio de configuración necesario, también establecer un indicador global (que también se establecerá en la aplicación que se está creando), y en el evento de escucha, compruebe el indicador.

FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.