слушатель vs обработчик в android

в чем разница между слушателем и обработчиком?

Я много искал, но не смог найти подходящего объяснения. Где я могу использовать прослушиватель и где я могу использовать обработчик в Android?

Я также прошел по следующей ссылке:

обработчик событий, прослушиватель событий и регистрация событий относятся к одному и тому же?

где я могу получить сравнительное обсуждение этих двух пунктов? Также, смогите кто-нибудь скажет мне, какие различные типы слушателей и обработчиков доступны?

2 ответов


ряд классов ActionScript имеют то, что называется событиями. Событие вызывается объектом, когда происходит определенное событие. Например, когда кто-то парит над символом кнопки в SWF, кнопка.событие onRollOver вызывается для данного экземпляра Button. Когда мышь перемещается в другое место, кнопка.событие onRollOut вызывается для того же экземпляра. Эти события происходят независимо от того, замечает их кто-нибудь или нет. Если вы действительно хотите что-то сделать в ответ на событие, вы должны управлять им с помощью обработчика событий или прослушиватель событий. Выбор между этими двумя определяется объектом-некоторые объекты ожидают обработчиков, некоторые слушатели - поэтому нажмите ссылку на язык Ol’ ActionScript, когда сомневаетесь. Обработчики относительно просты, но по какой-то причине слушатели, кажется, сначала озадачивают людей.

Обработчики Событий

самые популярные события, вероятно, принадлежат классам Button и MovieClip, которые разделяют многие из то же самое (клип может быть кнопкой, но не наоборот). Чтобы справиться с кнопкой.onrelease событие, все, что вам нужно сделать, это перетащить символ кнопки на сцену и дать ему имя экземпляра через инспектор свойств. Используйте это имя в сценарии фрейма для назначения функции событию.

myButton.onRelease = function() {
  // do something
}

другие события кнопки работают так же, как события MovieClip и все события, которые требуют обработчиков событий.

любое количество событий может быть обработано. Просто назначьте функция для каждого события, по мере необходимости. Кнопка, которая реагирует на опрокидывание, отпускание и выкатывание, например, может выглядеть так ...

myButton.onRollOver = function() {
  // do something
}
myButton.onRelease = function() {
  // do something
}
myButton.onRollOut = function() {
  // do something
}

Прослушиватели Событий

управление прослушивателями событий требует еще нескольких шагов. Прослушиватель выполняется с помощью экземпляра универсального объекта. Этот объект действует как связующее звено между, по крайней мере, двумя другими: объектом, вызывающим событие, и любыми объектами, прослушивающими событие. Давайте посмотрим на MovieClipLoader образец.

var mcl:MovieClipLoader = new MovieClipLoader();

на данный момент мы объявили переменную mcl, которая указывает на экземпляр MovieClipLoader. Теперь мы объявим другую переменную, mclListener, которая указывает на экземпляр Object. (Звучит смешно, я знаю, но мы создаем объект.)

var mclListener:Object = new Object();

этот общий объект теперь станет нашей связью. На данный момент код выглядит очень похожим на подход обработчика событий.

mclListener.onLoadInit = function() {
  // do something
}

я мог бы выбрать любое событие из Класс MovieClipLoader, это действительно не имеет значения. Здесь следует заметить, что универсальный объект обрабатывает событие от имени экземпляра оперативного класса. С помощью обработчиков событий экземпляр оперативного класса обрабатывает собственные события.

теперь, когда у нас есть наш слушатель, и теперь, когда функция была назначена одному из ее событий от имени нашего экземпляра MovieClipLoader, нам просто нужно подписаться на слушателя mcl.

mcl.addListener(mclListener);

сделано. Давайте посмотрим, что все в один дубль:

var mcl:MovieClipLoader = new MovieClipLoader();
var mclListener:Object = new Object();
mclListener.onLoadInit = function() {
  // do something
}
mcl.addListener(mclListener);

чтобы прослушать более одного события, просто следуйте примеру подхода обработчика событий.

var mcl:MovieClipLoader = new MovieClipLoader();
var mclListener:Object = new Object();
mclListener.onLoadStart = function() {
  // do something
}
mclListener.onLoadProgress = function() {
  // do something
}
mclListener.onLoadInit = function() {
  // do something
}
mcl.addListener(mclListener);

Ref:http://www.quip.net/blog/2006/flash/event-handlers-listeners

вы также можете проверить это yahoo ответ


основное различие заключается в том, что обработчики событий пусть сам исходный объект сделайте что-нибудь в ответ на событие, тогда как слушатели событий пусть другие объекты что-то в ответ на события, происходящие в объекте.

например: ваша деятельность имеет кнопку. Если вы хотите свой активность для обработки, когда кто-то касается кнопки, вы используете прослушиватель событий (выполнив btn.setOnTouchListener(...)). Но, если вы хотите создайте специализированную кнопку (например, ту, которая выглядит как собака и лает при прикосновении), вы можете создать подкласс кнопки и реализовать ее обработчик событий onTouchEvent(...). В этом последнем случае кнопка сама будет обрабатывать свое сенсорное событие.