Подтвердить что ты не робот

Обработчик или Слушатели. Что лучше?

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

4b9b3361

Ответ 1

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

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

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

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

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

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


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

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

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

Ответ 2

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

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