Я пишу приложение для Android, используя поставщика местоположения GPS в службе, которая запускается при создании основного действия (если служба уже не запущена). У меня сложилось впечатление, что служба будет продолжать работать, за тем маловероятным исключением, что диспетчер задач может убить ее, если будет нехватка памяти. По какой-то причине служба перезапускается, если есть период очень низкой активности, независимо от того, сколько памяти доступно. Когда пользователь находится снаружи и GPS может определить позицию, служба будет получать позицию каждые 30 секунд и отключать GPS в промежутках между ними (для экономии заряда батареи). В этом случае служба продолжает работать без каких-либо проблем, но когда пользователь перемещается внутрь и положение GPS не может быть найдено в течение пяти секунд, служба отключает GPS и повторно активирует GPS только каждые 200 секунд, чтобы проверить, пользователь вернулся на улицу. В этом случае служба иногда будет остановлена и не будет перезапущена, пока приложение не будет повторно открыто, а действие не перезапустит службу. Я создал отдельную службу, чтобы убедиться, что процесс не прерывается. Кто-нибудь знает, почему это может происходить? Большое спасибо за Вашу помощь! -Дом
Служба останавливается после нескольких минут бездействия
comment
У вас правильно настроены вейклоки?
- person nickfox   schedule 24.04.2011
comment
что такое вейклоки? извините, я нуб
- person GPSmaster   schedule 24.04.2011
comment
так что в моем случае подойдет PARTIAL_WAKE_LOCK?
- person GPSmaster   schedule 24.04.2011
comment
Да, но изучите приведенный ниже пример кода, чтобы понять, как это реализовать. Это не так прямолинейно, как может показаться сначала. И еще кое-что. Отключение GPS всего через 30 секунд может быть неправильным путем. Возможно, телефону не хватает времени для повторного получения данных GPS. Вам нужно будет проверить это и, возможно, постоянно держать GPS-радио включенным.
- person nickfox   schedule 24.04.2011
comment
GPS-чипу Navilink 3.0 (в моем Droid X) требуется около 3-5 секунд, чтобы вычислить позицию на улице при ясном виде неба. Я также не заметил снижения точности (по сравнению с постоянно включенным). Как вы думаете, могут ли быть другие последствия включения и выключения каждые 30 секунд?
- person GPSmaster   schedule 24.04.2011
Ответы (1)
Я бы посмотрел на пример Марка Мерфи, который касается сервисов и вейклоков:
Если вы не можете понять это из его примера кода, тогда вы хотите получить его книгу Advanced Android, где проблема подробно объясняется.
Руководство занятого программиста по расширенной разработке Android
Это одни из лучших книг по разработке под Android, которые стоят своих денег.
person
nickfox
schedule
23.04.2011
Спасибо! Я думаю, мне нужно больше узнать об ожидаемых намерениях и контексте приложения, чтобы понять, о чем идет речь.
- person GPSmaster; 24.04.2011