У меня сложный вопрос, касающийся множества различных компонентов приложения. Я надеюсь быть достаточно ясным.
В моем приложении объект приложения, синглтон, предоставляет модель (также синглтон) для многих действий. Основным видом деятельности, представляет список синхронизированных данных для пользователя. Эти данные поступают из модели.
У меня также есть виджет, и я хочу, чтобы он:
- обновлять при обновлении синхронизированных данных из модели (через графический интерфейс)
- по прошествии времени обновляйте, чтобы отображать только 2 первых синхронизированных данных списка, удаляя те, которые сейчас устарели.
Для достижения второй цели я разработал сервис, который запрашивает у модели получение некоторых данных и использует таймеры для пробуждения после истечения срока действия первых данных, удаляет их из списка и затем отправляет широковещательную рассылку виджету с некоторыми данными Намерение, что виджет будет отображаться.
Это отлично работает.
Но я также хочу, чтобы виджет обновлялся, как только данные меняются в модели (не потому, что проходит время, а из-за того, что пользователь запрашивает некоторые другие данные через графический интерфейс).
Но вот моя проблема:
как модель может указать виджету на обновление? У службы есть все для обновления виджета, но движок не может знать , если есть виджет. Я не хочу, чтобы модель вызывала сервис, поскольку, возможно, нет виджета и нет необходимости в дополнительном процессе для сервиса.
Как можно элегантно переработать это взаимодействие?
Я действительно что-то здесь упускаю.