Android BroadcastReceiver или простой метод обратного вызова?

В моих проектах Я использую BroadcastReceiverв качестве обратного вызова из длинного потока (например, уведомить действие о завершении загрузки и отправить некоторые данные ответа из рабочего потока Thread, чтобы действие могло отображать соответствующее сообщение для пользователя..). Чтобы использовать BroadcastReceivers, я должен быть осторожным, чтобы регистрировать и отменять регистрацию широковещательного приемника каждый раз, когда я его использую, а также должен заботиться о том, какие сообщения отправлять, особенно когда я использую этот метод для различных действий ( например загрузка, выполнение вызовов WebService и т. д.). А также для отправки пользовательских объектов через намерение Broadcast мне также нужно сделать объекты Parcelable.

В отличие от этого подхода, я видел также подход с использованием методов обратного вызова, который кажется более простым, чем метод, который я использую. Методы обратного вызова — это простая реализация методов интерфейса, которую можно использовать для достижения того же эффекта, что и BroadcastRecaiver в обмене сообщениями приложения. Этот подход не требует реализации Parcelable для возврата сложных объектов, и он не использует такие ключи, как BroadcastReceiver.. Я думаю, что плохая часть заключается в том, что мне нужно проверить объект обратного вызова на нулевое значение, прежде чем я захочу вызвать метод обратного вызова.. а также убедиться, что я запускаю код из реализации в потоке пользовательского интерфейса, чтобы я мог обновлять пользовательский интерфейс без ошибок.

Хорошо, надеюсь, вы поняли, что я хотел сказать :).

Теперь вопрос: считаете ли вы, что метод обратного вызова лучше (легче, чище, быстрее...), чем подход BroadcastReceiver, когда он используется только внутри одного приложения? (Обратите внимание, что я не использую Android Serviceдля фоновой работы. Просто AsyncTaskи Threads)

Спасибо!

54
задан Cata 13 May 2012 в 10:03
поделиться