Android - выполнять асинхронную задачу с интервалом, даже если приложение приостановлено

Мое приложение синхронизируется с данными, полученными с помощью асинхронной задачи. Когда данные получены, я обновляю список и генерирую уведомление. Он отлично работает, но если приложение находится в режиме паузы, я хочу только создать уведомление. Я хочу, чтобы он продолжал выполнять эту асинхронную задачу даже после onPause (если пользователь переключился на другое приложение или нажал клавишу «Домой»).

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


person Amos    schedule 12.02.2015    source источник
comment
Единственный способ сделать это — сделать это в сервисе. Нет никакой гарантии, как долго Activity будет оставаться в живых после вызова onPause.   -  person DeeV    schedule 12.02.2015


Ответы (1)


Почему бы не запустить службу, которая запускает фоновый поток? Служба будет продолжать работать, даже если вы не используете свое приложение. Когда вызывается onStop() вашего основного действия, запустите службу. Поток в службе спит и время от времени подключается к серверу и проверяет наличие обновлений.

В onCreate() службы запустите поток. В onStartCommand() (который вызывается, если служба уже существует) службы проверьте, жив ли поток. Если нет, начните тему.

Руководство по созданию сервисов: https://developer.android.com/guide/components/services.html

person Elyakim Levi    schedule 12.02.2015
comment
Думаю, я могу использовать сервис, но мне было интересно, если для небольшой задачи он мне не понадобится. Поскольку я никогда не работал с Сервисами, являются ли они самостоятельными приложениями или частью моего реального приложения? то есть мне нужно разработать новое приложение (которое является сервисом) или оно реализовано внутри основного приложения? - person Amos; 12.02.2015
comment
Сервис является частью вашего приложения. Просто создайте новый класс, расширяющий Service. Это также должно быть объявлено в вашем файле манифеста, как действие. Прочитайте руководство. Вам не нужно читать все это, просто бегло просмотрите соответствующие части. - person Elyakim Levi; 12.02.2015