Cómo obtener el oyente de una vista

Escribo un servicio que interactúa con otras aplicaciones. Registra a los oyentes en las vistas (botones, vistas de texto, ...) que ya tienen oyentes. Necesito reemplazarlos con mis propios oyentes (trabajos), hacer algunas cosas y luego cancelar el registro de mis oyentes y restaurar los antiguos.

Se está ejecutando una aplicación con un botón con un onClickListenerMi servicio registra un onClickListener dentro de UI-Thread + para hacer algoMi servicio restaura al antiguo oyente.

Sería fácil, si hubiera unview.getOnClickListener -método. Entonces podría salvar a los viejos y reemplazar a los nuevos oyentes cuando termine.

¿Hay alguna manera de obtener oyentes de una vista o tener más de un oyente del mismo tipo vinculado a una vista?

Button btn = (Button) findViewById(R.id.btn1);
btn.setOnClickListener(new OnClickListener() {

        public void onClick(View v) {
            //do something
        }
    });
// I need to do, but found no solution for that.
View.OnClickListener oldListener = btn.getOnClickListener();

Si registro los nuevos oyentes en una vista, los antiguos se anularán, ¿verdad? También estaría bien si ambos oyentes ("nuevo" y "viejo") existan al mismo tiempo. Sólo los viejos no deben irse.

Edición: Lamentablemente no tengo la posibilidad de guardar el oyente en la asignación. Necesito recuperarlo desde el componente de vista.

Gracias

Respuestas a la pregunta(3)

Su respuesta a la pregunta