Мой сервис работает последовательно, что я и хочу
Ваши пользователи могут не соглашаться.
но нужно ли это делать для каждого действия иservice?
Вы, вероятно, не должны делать это для любого компонента.В основном это происходит в тех случаях, когда пользовательский интерфейс слишком сложен для успешного повторного рендеринга в новом действии (например, в некоторых играх, воспроизведении видео) или когда действие также привязано к определенной ориентации.В любом случае, для сервисов нет атрибута android:configChanges
.
потенциально это операционная система, убивающая мой сервис
Операционная система отключит пропущенные сервисы, такие как ваш,для предотвращения чрезмерного разряда батареи.
есть ли способ заставить систему игнорировать мой сервис
Вы можете использовать startForeground()
.
или для автоматического перезапуска службы через заданное количество минут?
Возврат START_STICKY
(или, возможно, START_REDELIVER_INTENT
) из onStartCommand()
.
Еще лучше было бы пересмотреть ваш подход.Отслеживание местоположения - особенно GPS - является существенным расходом батареи.Существует довольно мало приложений, которые должны постоянно отслеживать местоположение в фоновом режиме.Если вам действительно нужны исправления местоположения очень часто (например, каждые 15 минут), используйте AlarmManager
, чтобы запустить службу, чтобы получить исправление, а затем вызовите службу stopSelf()
, чтобы уйти до следующего сигнала тревоги.