Обработчик или Слушатели.Что лучше? - PullRequest
13 голосов
/ 10 декабря 2010

Обработчик или Слушатели.Что лучше использовать для уведомления о событии?Что быстрее, эффективнее и т. Д.? 1001 *

Ответы [ 2 ]

8 голосов
/ 06 марта 2012

Хороший вопрос!

сценарий использования обработчика

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

Например, в приложении для обмена мгновенными сообщениями может потребоваться сохранить последовательность чата.

сценарий использования обратного вызова

Моя фоновая служба также использует класс, который читает с аппаратного обеспечения (в отдельном потоке); некоторые данные могут поступить в любое время и требуют немедленной обработки. Для этого класса я реализовал интерфейс слушателя / обратного вызова.


Мой единственный вопрос: есть ли этикет для размера обработчика? У меня около 50 уникальных сообщений:

  • исходящие веб-запросы состоят из около 25 сообщений (каждое сообщение представляет собой отдельный API на веб-сервере)
  • Каждый API возвращает ответ, поэтому есть еще 25 входящих веб ответы

Обработчику требуется около 60% кода службы - как вы можете себе представить, это приводит к очень большой структуре переключателя (case {}) (почти 1000 строк кода). Слишком большой? Как его разбить на части?

3 голосов
/ 10 декабря 2010

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

Однако обработчик - это класс Android ... вы используете его для передачи сообщений и исполняемых файлов из потока, инициирующего событие (например"загрузка завершена") в поток, который должен обработать его (например, поток пользовательского интерфейса).

...