Hola Alexasthar
hasta aquí llevo clara, pero ahora, en tu código de arriba marca startservice at, supongo eso va en un activity (o estoy mal?) por lo que al apagarse la pantalla se detendría la orden.
Creo que has leido muy aprisa mi tutorial

, o quizas no he sabido expresarme correctamente en el.
Sub Service_Start: Entra cada vez que llames a StartService o StartServiceAt. Cuando estos Sub ejecuta el proceso pasa a primer plano. Lo que significa que el Sistema Operativo no va a matar el proceso hasta que este Sub termine de ejecutarse.
Si quieres ejecutar algún código cada cierto tiempo, es en este Sub donde debes poner el código, por ejemplo:
' vuelvo a llamar al servicio en el tiempo fijado ESTA ES LA PARTE QUE NO HAS VISTO
StartServiceAt("", DateTime.Now + Minutos * DateTime.TicksPerMinute, True) ‘ para minutos
StartServiceAt("", DateTime.Now + Segundos * DateTime. TicksPerSecond, True) ‘ para segundos
Si tu creas un modulo de servicio, al crearlo se crean varios subs, y entre ellos el
Sub Service_Start (StartingIntent AsIntent) (lo explico en mi tutorial), asi que este sub no pertenece a un formulario, pertenece al modulo de servicio que tu crees.
El
StartServiceAt hace que vuelvas a entrar en el servicio al tiempo prefijado, no hace que entre un formulario, si no que entre de nuevo en el servicio y entre en
Sub Service_Start (StartingIntent AsIntent), por lo tanto desde este sub, escribe el codigo que quieres hacer que se ejecute cada vez que entre en el servicio, y si quieres abrir un formulario, pues tambien lo puedes hacer, pero no para que el servicio siga funcionando, si no para que el usuario vea algo. El servicio NO NECESITA de ningun formulario para que funcione, esa es su gracia.
Si quiero que el gps obtenga datos en segundo plano (seria un servicio que no creo tendría problemas) y quiero que cada 5 minutos timer (que si no mal recuerdo no es bueno meterlos en los servicios) envíe por http la información (otro servicio???, convivirían varios servicios de fondo al mismo tiempo en el mismo programa??), como se haría correctamente sin que android los matase y los mantuviese coordinados??? (Sobretodo creo por el timer, ya que seria un loop cada 5 minutos).
De los timer dentro de los servicios mejor te olvidas, tienes una herramienta mejor que es el
StartServiceAt, los timer rara vez funcionan bien en un servicio y solo dan problemas. Y no lo digo yo, lo dice Erel.
Si quieres que cada 5 minutos el gps obtenga datos, es tan facil como esto:
Sub Service_Start (StartingIntent AsIntent)
' llama aqui al sub del gps para obetener datos
StartServiceAt("", DateTime.Now + 5 * DateTime.TicksPerMinute, True) ' volverá a llamar al servicio dentro de otros 5 minutos
End Sub
Si por ejemplo quieres que el mismo servicio llame en diferentes tiempos cosas diferentes (leer GPS, enviar datos, actualizar algo, etc) y no quieres crear varios servicios, crea un servicio con una llamada en una base de tiempo que sea multiplo de las diferentes llamadas, crea una variable global e incrementala cada vez que entres en el servicio, y mejor salvala a fichero, por ejemplo:
Sub Service_Start (StartingIntent AsIntent)
IrALeerEnArchivo ' coger el dato de ContadorMinutos
ContadorMinutos = ContadorMinutos +1
If ContadorMinutos Mod 2 = 0 Then IraEnviardatos ' cada dos minutos
If ContadorMinutos = 4 Then
ContadorMinutos = 0 ' tambien puedes poner un contador que se resetee a un valor alto y mirar el tiempo con MOD como arriba
IraLeerDatosGPS
end if
IrASalvarEnArchivo
StartServiceAt("", DateTime.Now + 1 * DateTime.TicksPerMinute, True) ' volverá a llamar al servicio dentro de 1 minuto
End Sub
Perdon por tanta linea, es que me quise dar a entender bien.
No te disculpes, prefiero que alguien exprese bien lo que necesita a que con dos palabras lo intente definir
Nota: Cuando quieras matar el servicio, acuerdate de ademas de hacer un :
StopService(NombreDelServicio) ‘ matar el Servicio
Hacer un :
CancelScheduledService(NombreDelServicio) ' Para si has realizado un StartServiceAt
Saludos