Вопросы для начинающих разработчиков Java - общение между классами с событиями - PullRequest
1 голос
/ 30 января 2010

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

Я создаю очень простое приложение для Android, которое будет отображать ваше местоположение на экране. У меня есть мой основной класс (HelloAndroid на данный момент), который расширяет Activity, и я создал класс LcoationUpdateHandler, который прослушивает обновления.

HelloAndroid содержит экземпляр LocationUpdateHandler, поэтому мой вопрос в том, как LocationUpdateHandler взаимодействует с HelloAndroid.

В flex я бы отправлял событие от одного к другому, но из проведенных поисков это не похоже на очень явный способ выполнения вещей?

Спасибо за вашу помощь.

Ответы [ 2 ]

2 голосов
/ 30 января 2010

Когда ваш экземпляр HelloAndroid создает экземпляр LocationUpdateHandler, он может передать ссылку на себя в конструкторе, который LocationUpdateHandler может сохранить для использования для будущих вызовов методов в случае событий.

Для таких ситуаций вам не нужно знать, какой тип объекта установлен LocationUpdateHandler. Это интерфейс, в который входят интерфейсы. Вы можете определить интерфейс, определяющий методы событий, и реализовать этот интерфейс, чтобы LocationUpdateHandler мог сохранять ссылку на этот интерфейс для доставки событий.

Если ситуация симметричная, оба класса могут реализовывать один и тот же интерфейс событий.

1 голос
/ 30 января 2010

Звучит так, как будто вы ищете Шаблон наблюдателя . Это работает так, что наблюдатели регистрируются на объекте, который они наблюдают, так что они могут быть уведомлены о событиях.

В вашем конкретном случае, если вы хотите, чтобы LocationUpdateHandler подтолкнул информацию к HelloAndroid, он должен знать о HelloAndroid. Таким образом, ваш LocationUpdateHandler должен по крайней мере содержать ссылку на HelloAndroid, но для обобщения этого он должен иметь List наблюдателей, которые все реализуют общий интерфейс, содержащий функцию обратного вызова, которая будет вызываться всякий раз, когда LocationUpdateHandler имеет обновить.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...