2016-02-05 2 views
1

Я создал службу (AutoTestService) для выполнения какой-либо задачи одним способом. Закончив цикл, установите будильник для следующего цикла для выполнения задачи (Тревожный вызов снова AutoTestService). В каждой задаче я приостанавливаю поток для 10/20 (используя Thread.sleep) секунд и перехожу к следующей задаче. Служба Iam запускается для WakefulBroadcastReceiver с помощью AlarmManaager.Служба останавливается при смене телефона

Работает нормально, когда экран телефона включен и подключен к USB. Но если телефон спит без USB, мой сервис прекращает выполнение. Я подозреваю, что thread.sleep не возобновляется, когда телефон находится в спящем режиме. Приложение работает на android 5.1 & 5.1.1

Может ли кто-нибудь предложить предложение. Я борюсь с этим долго.

+1

Вы пытались использовать ['Service # startForeground()'] (http://developer.android.com/intl/es/reference/android/app/Service.html#startForeground%28int,%20android.app.Notification%29). Прекрасно работает для меня. – m0skit0

+0

Я этого не делал. Где использовать этот startForeground – Sri

+0

В сервисе. Сделайте некоторые исследования самостоятельно. Прочтите документацию, связанную с вами, это объясняется в начале страницы. – m0skit0

ответ

1

Использовать IntentService.

Класс IntentService обеспечивает прямую структуру для запуска операции на одном фоновом потоке. Это позволяет обрабатывать длительные операции, не влияя на отзывчивость вашего пользовательского интерфейса. Кроме того, IntentService не подвержен влиянию большинства событий жизненного цикла пользовательского интерфейса, поэтому он продолжает работать в обстоятельствах, которые закрывали бы AsyncTask

+1

Я тоже пробовал с IntentService, но все тот же ответ – Sri

+0

И вы используете собственный поток IntentService? не создавая другого? – Hector

+0

IntentService используется без потока, потому что он имеет собственный Runnable. Но с помощью сервиса i я использовал новую тему. – Sri

Смежные вопросы