Как в Activity в Android по событию обновлять данные?

В MainActivity встроен таймер, который каждую секунду отдельным потоком получает данные и оправляет их intent'oм во вторую активность. Во второй активности в onCreate() данные достаются, но только один раз. Как обновлять данные во второй активности каждую секунду?
  • Вопрос задан
  • 4048 просмотров
Решения вопроса 1
onepavel
@onepavel
Консультация и разработка мобильных приложений
Давайте рассуждать =) Есть объект, который по таймеру посылает сообщение или какую-то нотификацию.
И мы хотим это сообщение ловить. Интент нам не подойдет, он скучный, раз стартанул активити и сдулся.
Значит нам нужен механизм постоянного оповещения. Итак, чтобы вышедшее сообщение пришло к нам, нужно кому-то сказать, что мы хотели бы получать оповещение. То есть подписаться. Предлагаю два варианта.
1. непосредственно объекту с таймером сказать, что такой-то объект хочет получать сообщение,
для этого есть паттерн Observer-Observable
cpp-reference.ru/patterns/behavioral-patterns/observer
developer.android.com/reference/java/util/Observer.html
www.vogella.com/tutorials/DesignPatternObserver/ar...
2. подписаться через третий объект, который будет разруливать
прием и отсылку нотификаций
cpp-reference.ru/patterns/behavioral-patterns/mediator
тут несколько вариантов
стандартный механизм андроида
developer.android.com/reference/android/support/v4...
сторонние библиотеки
https://github.com/greenrobot/EventBus
square.github.io/otto

думаю понимаете, что сама активити не должна подписываться на событие
и если сообщения приходят в бекграунд потоке, то используйте
runOnUiThread() у активити или post() у View объектов
как-то так
Ответ написан
Пригласить эксперта
Ответы на вопрос 3
gadfi
@gadfi
https://gamega.org
первая к тому времени уже закрыта, не знаю вашу задачу, но посмотрите в сторону сервисов или AsyncTask
зы глобальные переменные зло, есть серьезное подозрение что архитектуру стоит менять
Ответ написан
Комментировать
@IceJOKER
Web/Android developer
в каждую секунду открывать раз за разом активити? О_О что за извращение, неужели нельзя другим способом сделать?
может отправляются данные только один раз? без кода вам вряд ли помогут
Ответ написан
Комментировать
Zenx
@Zenx Автор вопроса
Нет, активити открывать - это точно извращение. Во второй активности я каждую секунду проверяю глобальную переменную и обновляю UI.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы