Android: envía los datos de la ubicación en segundo plano periódicamente (cada 30 segundos) y solicita al servidor nuevos datos
Guión:
Publicar en el servidor para obtener nuevos datos en segundo plano cada 30 segundos durante un período largo, es decir, 12 horas. Los datos de ubicación deben enviarse junto con esto.
- Ayúdame a usar correctamente los Servicios y los Hilos
- La notificación sigue en la barra después de matar al servicio
- ¿Android mata cada servicio o el proceso entero?
- Servicio externo de Android desde una biblioteca (AAR, no Shared Service)
- ¿Cómo enlazar un servicio?
Implementación actual;
Clase de servicio;
- Oyente de la localización con el intervalo de 30 segundos que fija los valores de la longitud y de la latitud a dos variables locales
- El administrador de alarmas dispara la intención pendiente cada 30 segundos a un receptor de difusión.
- El receptor de emisión inicia un IntentService con variables de ubicación en los extras.
- El IntentService http coloca la ubicación y pide nuevos datos del servidor.
-
IntentService envía la respuesta del servidor a la clase de servicio principal a través del receptor de difusión.
- La clase de servicio starts_sticky para asegurar que el sistema operativo reinicie.
He intentado algunas variaciones diferentes;
-
He intentado usar un Handler y runnable para manejar el mecanismo de sincronización para publicar en el servidor sin embargo, el tiempo postDelay pasó de 2 minutos a 7 minutos cuando el dispositivo está dormido.
-
También intentó disparar IntentService directamente desde el administrador de alarmas pero no pudo cambiar los extras de PendingIntent con las variables de ubicación más actualizadas.
Preguntas;
-
¿Es la implementación actual el camino a seguir?
-
¿Ir hacia abajo Google GCM ruta ser mucho más beneficioso?
-
¿Cómo puedes probar enérgicamente la clase de servicio especialmente con respecto a la recuperación del sistema operativo matándola?
Gracias por adelantado.
- AudioSource.VOICE_CALL no funciona en android 4.0 pero funciona en android 2.3
- Servicio que se ejecuta cada minuto
- ¿Cómo actualizar los datos enviados a un servicio utilizando la intención cuando el servicio es iniciado por el administrador de alarmas?
- Paho MQTT Actividad de activación del servicio de Android
- Clear Aplicaciones recientes limpiar la memoria de aplicaciones y mi receptor dejó de funcionar
- ¿Es posible tener varias cerraduras de la estela?
- Mostrando una Snackbar desde dentro de un Servicio
- Android: crea un servicio que se ejecuta una vez al día
Para evitar que el sistema operativo destruya su servicio, debe notificar al usuario que su servicio es un servicio continuo, como se describe en http://developer.android.com/guide/components/services.html#Foreground .
Conseguí que mi servicio se ejecutara cada 2 min en segundo plano usando AlarmManager y WakeLock, como se describe en esta respuesta . Incluso cuando el dispositivo está en reposo, se ejecuta cada 2 minutos. Sólo tienes que configurar la alarma para repetir como
alarmMgr.setRepeating(AlarmManager.ELAPSED_REALTIME_WAKEUP, SystemClock.elapsedRealtime()+5000, 60000 * ALARM_PERIOD_IN_MINUTES, alarmPendingIntent);
En lugar de configurarlo a un tiempo.
- Aplicación de la aplicación demo de Android app?
- Cómo obtener registro completo del sistema de android