Handler или Listeners. Что лучше?

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

Solutions Collecting From Web of "Handler или Listeners. Что лучше?"

Это хороший вопрос!

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

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

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

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

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


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

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

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

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

Однако Handler – это класс Android … вы используете его для передачи сообщений и runnables из потока, поднимающего событие (например, «загрузить полный») в поток, который должен обрабатывать его (например, поток пользовательского интерфейса).