2011-01-21 3 views
0

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

Эта фоновая служба запускается в отдельном процессе, чем процесс основного действия приложения (с использованием тега android: process в декларации манифеста службы). Проблема, с которой я сталкиваюсь, заключается в том, что при запросе обновлений местоположения GPS из службы, метод onLocationChanged() LocationListener никогда не вызывается, даже когда я отправляю макет местоположения с помощью команды DDMS/geo. Но, с другой стороны, запрос обновлений местоположения GPS из основной активности приложения действительно работает, и метод onLocationChanged() вызывается должным образом при получении исправления, поэтому мне интересно, что необходимо изменить, чтобы получить такое же поведение изнутри службы, а не для деятельности.

Заранее благодарим за помощь; Hass.

+0

Покажите нам, как вы запрашиваете обновления. –

ответ

3

Эта услуга запускается из основной деятельности приложения и запускается в бесконечном цикле для выполнения обновлений местоположения на внешний сервер.

Пожалуйста, не делайте этого, поскольку вы теряете память. Пожалуйста, используйте AlarmManager, чтобы вызвать автоматическую остановку Service (например, IntentService). И, поскольку вы, кажется, получаете места, подумайте об использовании моего сервиса LocationPoller.

Эта фоновая служба выполняется отдельным процессом, чем процесс основной деятельности приложения (с использованием тега android: process в объявлении манифеста службы).

Пожалуйста, не делайте этого. Вы теряете память и не добавляете никакой ценности. Это может также способствовать вашим проблемам.

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

Получение мест в пределах обслуживания работает очень хорошо. См. Пример LocationPoller.

+0

Спасибо за решение LocationPoller. –

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