В моих проектах я использую BroadcastReceiver
в качестве обратного вызова из длинного работающего потока (например, уведомляет о том, что операция завершена и отправить некоторые данные ответа от Worker Thread
, чтобы активность могла отображать соответствующие сообщение пользователю..).
Чтобы использовать BroadcastReceiver
, я должен быть осторожным, чтобы регистрировать и отменить регистрацию широковещательного приемника каждый раз, когда я его использую, а также заботиться о том, какие сообщения отправлять esspecialy, когда я использую этот метод для более различных действий (например, загрузка, создание WebService звонки и т.д.). А также для отправки пользовательских объектов через трансляцию, мне также нужно сделать объекты Parcelable
.
В отличие от этого подхода, я также рассмотрел подход методов обратного вызова, который выглядит проще, чем метод, который я использую. Методы обратного вызова - это простая реализация интерфейсных методов, которые могут быть использованы для достижения такого же эффекта, как BroadcastRecaiver в обмене сообщениями приложений.
Этот подход не требует реализации Parcelable для возврата сложных объектов, и он не использует такие клавиши, как BroadcastReceiver
.. Я думаю, что плохая часть заключается в том, что мне нужно проверить объект обратного вызова для нулевого значения, прежде чем я хочу вызвать метод обратного вызова.., а также чтобы убедиться, что я запускаю код из реализации в потоке пользовательского интерфейса, поэтому я могу обновить интерфейс без ошибок.
Хорошо, надеюсь, вы поняли, что я хотел сказать:).
Теперь вопрос в том, как вы думаете, что метод обратного вызова лучше (легче, чище, быстрее..), чем подход BroadcastReceiver
, когда они используются только внутри одного приложения? (Обратите внимание, что я не использую Android Service
для фоновой работы. Просто AsyncTask
и Thread
s)
Спасибо!