У меня есть приложение, которое загружает расписание и сохраняет его, а также регулярно загружает изменения в это расписание. В настоящее время я использую singleton, но я считаю это уродливым с точки зрения дизайна. Из-за загрузки мне нужна централизованная система для минимизации использования сети.Как обновить виджет из приложения?
В текущей ситуации каждый класс, требующий обновлений из singleton first, получает экземпляр этого синглтона, а затем предоставляет интерфейс, из которого вызывается некоторые методы, когда требуется обновление. В настоящее время singleton обрабатывает все загрузки в рабочих потоках. Обычно я бы использовал AsyncTask, вызванный из Activity, однако, потому что мне тоже нужно отправить результат в виджет, я не вижу эту работу.
Альтернатива - Сервис. Я просто привязал бы его как к виджету, так и к активности. Проблема в этом случае заключается в том, что я не могу связываться с BroadcastReceiver (которым является AppWidgetProvider). Проблема в том, что я не могу регулярно обновлять свой виджет.
Мой вопрос: как я могу (или: могу ли я) создать свое приложение таким образом, чтобы я мог обновлять свой виджет из службы (чтобы избавиться от синглтона) или есть лучший способ (возможно BroadcastReceivers)?
Загрузка не обязательно должна выполняться в определенное время, поэтому я буду использовать Handler вместо AlarmManager. Иначе: спасибо, он уточняет выделение. – Boude
@Boude: «Загрузка не должна выполняться в определенное время, поэтому я буду использовать обработчик вместо AlarmManager» - как только ваш процесс будет завершен, ваш «обработчик» уйдет. 'AlarmManager' - гораздо лучшее решение для периодических загрузок, если эти загрузки должны появиться, даже если ваш пользовательский интерфейс не находится на переднем плане. – CommonsWare
Загрузка должна выполняться при видимости виджета. Только когда активность и виджет не видны, загрузка не требуется. Я думаю, что попробую оба, проверяя свою альфу и принимаю решение, основанное на некотором опыте пользователя. Благодарю вас. – Boude