Обработчик или прослушиватели. Что лучше использовать для уведомления о событии? Что быстрее, эффективнее и т.д.?
Обработчик или Слушатели. Что лучше?
Ответ 1
Это хороший вопрос!
сценарий для использования обработчика
У меня есть фоновое приложение Android, работающее в моем приложении, которое использует обработчики исключительно для веб-коммуникаций. Я решил пойти по этому маршруту, потому что обработчик будет отправлять запросы в очередь и выполнять их один за другим, после чего я знаю, что последовательность остается нетронутыми.
Например, в приложении для мгновенного обмена сообщениями вам может потребоваться поддерживать последовательность для вашего чата.
сценарий для использования обратного вызова
В моем фоновом сервисе также используется класс, который читает с аппаратного обеспечения (в отдельном потоке); некоторые данные могут появиться в любое время и должны быть немедленно обработаны. Для этого класса я реализовал интерфейс прослушивателя/обратного вызова.
Мой вопрос только в том, существует ли какой-либо этикет для размера обработчика. У меня около 50 уникальных сообщений:
- исходящие веб-запросы состоят примерно из 25 сообщений (каждое сообщение представляет собой другой API на веб-сервере).
- Каждый API возвращает ответ, поэтому есть еще 25 входящих веб-сайтов ответы
Обработчик требует около 60% кода службы - как вы можете себе представить, это приводит к очень большой структуре (case {}) (почти 1000 строк кода). Слишком большой? Как разбить его на части?
Ответ 2
Нет такой вещи, как тип Listener, это просто соглашение об именах для интерфейсов обратного вызова. Поэтому вы просто используете их, если хотите синхронизировать события в одном и том же потоке.
Однако Handler - это класс Android... вы используете его для передачи сообщений и runnables из потока, поднимающего событие (например, "загрузить полную" ) в поток, который должен обрабатывать его (например, поток пользовательского интерфейса).