Как понять, что служба обновления работает в фоновом режиме? - PullRequest
1 голос
/ 08 октября 2010

В настоящее время я работаю над приложением для ОС Android, которое отображает некоторые данные.Чтобы обеспечить актуальность этих данных, необходимо, чтобы приложение время от времени получало обновления с удаленного сервера.Поскольку данные меняются не очень часто, это обновление следует проводить раз в неделю.Я хочу дать пользователю возможность выбрать день и день обновления для обновления (и при необходимости полностью отключить эту функцию).

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

Первое, о чем я подумал, это удаленная служба, которая запускается сзагрузка системы, определяет время запуска обновления, устанавливает таймер, а затем ждет / спит, чтобы таймер сработал.

Теперь мне сказали, что лучше использовать таймеры будильника или какие-то обработчики.... чем больше я читаю на эту тему, тем больше способов сделать это, кажется, существует.

Теперь, я немного растерялся, какой метод лучше для меня ... так вот что мне нужно:

Я хочу выполнить некоторый код в указанное время. Этот таймер используется для запуска выполнения кода через 7 дней.(т.е. каждую неделю в определенный день и время недели) Код должен запускаться БЕЗ пробуждения телефона, если он «спит» (экран затемнен). При запуске кода никакие действия не должны запускаться.то есть ни одно приложение не появляется на экране. Код, который выполняется, должен получить некоторые данные из Интернета.Если в это время нет подключения к Интернету, таймер должен быть установлен в спящий режим на 30 минут, а затем повторите попытку. После завершения выполнения кода таймер будет установлен на следующий интервал, который будет через 7 дней. Таймер должен запускаться при загрузке системы, например, если я перезагружаю телефон, таймер должен определить следующую дату для выполнения кода и составить расписание таймера.Это должно работать без ЛЮБОГО взаимодействия с пользователем!(то есть без запуска самого приложения) Когда "спит", поток / служба / таймер / что-либо еще не должно потреблять какие-либо системные ресурсы, если это возможно ... Что мне нужно, так это простой unix cronjob.

Я думаю, что кто-нибудь здесь знает "Newsrob" для Android?То, что я хочу осознать, во многом похоже на службу newsrob-updateservice.

1 Ответ

2 голосов
/ 22 августа 2011

Служба Android + Broadcast Receiver + Alarm Service решит вашу задачу -

Ваша служба будет вызываться из BroadCast Receiver, а в Broadcast приемнике вы должны зарегистрироваться для различных событий - BOOT_RECEIVER, ACTION_USER_PRESENT, которые позаботятся оВаша задача сброса и обновления ALARM.

Спасибо.

...