2010-11-01 1 views
3

Разве эти конкуренты? Я думаю, что это не так, но не вижу этого.Android: looper/handler против Java Observer?

Как насчет в контексте деятельности, требующей изучения, когда служба имеет новый xyz?

Спасибо!

+0

конкурентов вы имеете в виду два различных способа сделать то же самое? У них есть несколько иные цели. Петутер должен помочь вам создать цикл сообщений, наблюдатель должен позволить вам получать обновления состояния объекта, который вы наблюдаете. Его действительно непонятно, каков ваш вопрос. –

+0

И цель Looper - обрабатывать асинхронное Сообщение ... так же, как Наблюдатель обрабатывает асинхронный Observable. Мой вопрос: зачем использовать петлитель/обработчик? – DJC

+1

Обратные вызовы наблюдателей не обязательно асинхронны, это всего лишь способ развязки компонентов. С обработчиком сообщения обрабатываются в текущем потоке в какой-то момент в будущем. – dhaag23

ответ

1

Они предназначены для разных целей, поэтому вы не можете сравнивать друг с другом так, как будто вы исключаете другого, как вы можете предполагать. Я объясняю:

  • Зарегистрированные Наблюдатели получать уведомления об изменении все вместе последовательно просто вызывая разnotifyObservers(..).

  • Обработчиков позволяют изменять компоненты пользовательского интерфейса от фонового потока, но вы справляетесь/обновлением только 1 «наблюдатель» (тот, обрабатываемый обработчик).

Более продвинутые, если вы думаете, вы можете даже объединить два, чтобы всегда быть исключением бесплатно в то время как обновление пользовательского интерфейса от фонового потока все еще держа шаблон Observer.

Я думаю, что никто не ответил вам в этих 5 лет, потому что почти никто не знает о великой силе паттерна наблюдателя ;-)

+0

Не могли бы вы рассказать о том, как эти два шаблона можно комбинировать? Например, если у меня есть пользовательский интерфейс, наблюдатель для этого пользовательского интерфейса, обработчик, обрабатывающий некоторый запрос, инициированный с этого пользовательского интерфейса, и компонент сети, который получает фактический ответ на этот запрос. Каков поток, если я хочу объединить эти два шаблона? Благодаря! – jiu9x9uij