1) Да, возможно, чтобы служба работала до тех пор, пока пользователь (или во время нехватки ресурсов, система) не убил ее.Служба, которая должна работать таким образом, должна переопределять метод
onStartCommand()
и запускаться с помощью
Context.startService()
. Вы имеете в виду службы, которые переопределяют onBind () и запускаются с помощью
context.bindService()
Прочтите документацию по Сервису, она содержит описание жизненных циклов обоих видов сервисов.
2) Написано одно из лучших руководств по передовым методам геолокации здесь от Рето Мейера.Проверьте это