Является view.setOnTouchListener (прослушиватель) многоадресной рассылки? как это работает?

Мой вопрос касается эффектов вызова setOnTouchListener несколько раз с тем же или другим слушателем.

view.setOnTouchListener (myListener);

Я понимаю, что это приведет к вызову метода public boolean onTouch (View v, MotionEvent event) в классе myListener в событиях движения. Я не понимаю, что происходит, когда я позже назову это:

view.setOnTouchListener (myOtherListener);

Действительно ли myListener получает события движения?

Кроме того, если я позвоню

view.setOnTouchListener (myListener);

Опять же, вызывает ли он myListener.onTouch дважды в каждом событии касания? Наконец, как отказаться от подписки в качестве слушателя?

Я просмотрел руководство для разработчиков, но не нашел ничего конкретного, чтобы узнать, как это или аналогичные setListeners работало, но если у кого-то есть удобная закладка или он знает, как это работает, то это будет оценено по достоинству.

Общее правило – когда функция начинается с «set», она заменяет предыдущий прослушиватель. Если вы хотите view.setOnTouchListener(null); регистрацию слушателя, используйте view.setOnTouchListener(null); ,

  view.setOnTouchListener(myListener); /* myListener is active */ view.setOnTouchListener(myOtherListener); /* myListener is inactive, myOtherListener is active */ view.setOnTouchListener(myListener); /* myListener is active, myOtherListener is inactive */ 

Если есть аддитивная логика, вы обычно увидите префикс add или register в имени функции. Например, TextView.addTestChangedListener() и Context.registerReceiver() .