PDA

Ver la Versión Completa : [ CONSULTA ] Servicio con conexion a REST


esnaucer
17/09/14, 11:39:25
Hola a todos,
estoy desarrollando una app la cual tiene un servicio en segundo plano que se conecta a un API REST para consultar un email.
La cosa es que si el teléfono no esta en reposo me realiza bien la conexión y obtiene la respuesta pero cuando el teléfono entra en reposo no se comunica con el API y no me realiza la conexión, o mas bien no se conecta en el tiempo establecido.

¿Alguien puede orientarme en como puedo resolver este problema?

Un saludo.

kriogeN
17/09/14, 12:26:42
Puedes hacer que el servicio sea Wakeful, pero te va a drenar la batería que da gusto.

Lo mejor será que te apoyes en el AlarmManager configurándolo como RTC_WAKEUP y lances un IntentService cada X tiempo.

esnaucer
17/09/14, 12:50:07
Puedes hacer que el servicio sea Wakeful, pero te va a drenar la batería que da gusto.

Lo mejor será que te apoyes en el AlarmManager configurándolo como RTC_WAKEUP y lances un IntentService cada X tiempo.

Tienes algun ejemplo?
¿Si lo hago Wakeful puede notarse mucho la bateria?

kriogeN
17/09/14, 13:35:27
Es poner al principio del servicio un PARTIAL_WAKE_LOCK. Tendrás que darle a la app permisos de WAKE_LOCK.

http://developer.android.com/reference/android/os/PowerManager.html

El ejemplo es para SCREEM_DIM_WAKE_LOCK, sólo tienes que cambiarlo por PARTIAL_WAKE_LOCK.

Pero si, se va a notar muchísimo la batería, ten en cuenta que el móvil NUNCA entrará en reposo y siempre estará funcionando el procesador.

¿Cuánto te gasta el móvil escuchando música con la pantalla apagada? Pues te gastará casi igual.

esnaucer
17/09/14, 13:50:46
Es poner al principio del servicio un PARTIAL_WAKE_LOCK. Tendrás que darle a la app permisos de WAKE_LOCK.

http://developer.android.com/reference/android/os/PowerManager.html

El ejemplo es para SCREEM_DIM_WAKE_LOCK, sólo tienes que cambiarlo por PARTIAL_WAKE_LOCK.

Pero si, se va a notar muchísimo la batería, ten en cuenta que el móvil NUNCA entrará en reposo y siempre estará funcionando el procesador.

¿Cuánto te gasta el móvil escuchando música con la pantalla apagada? Pues te gastará casi igual.

Pues he estado leyendo el enlace que me has pasado y creo que descarto esa opción ya que el servicio nunca se detiene y la batería se la fundirá como tu dices en poco tiempo, el problema que nunca he trabajado con la clase AlarmManager.
¿Tienes algún ejemplo con esta clase?

esnaucer
17/09/14, 17:00:38
Puedes hacer que el servicio sea Wakeful, pero te va a drenar la batería que da gusto.

Lo mejor será que te apoyes en el AlarmManager configurándolo como RTC_WAKEUP y lances un IntentService cada X tiempo.

:aplausos::aplausos::aplausos:

Muchisimas gracias compañero, al final lo he resuelto con AlarmManager y ahora me funciona a la perfección. :ok:

De nuevo muchas gracias!!!!

esnaucer
03/10/14, 13:28:19
Hola de nuevo,
pues parece que me sigue fallando la aplicación. Todo funciona correctamente hasta que el teléfono lleva un rato en reposo (Pantalla negra). Cuando esta en reposo y llega el momento de conectar el el API me devuelve un conection refused.

Lo implemente con el AlarmManager pero aun asi me sigue fallando. Entiendo que el problema esta en que cuando el telefono entra en reposo por alguna razón (ahorra de batería) se desconecta de la red, pero si es asi ¿Como hago para reestablecer la conexión y poder comunicar con el API?

He intentado que si no tengo conexión lanzar varias veces la llamada al API, pero nada solo entra en bucle y no consigo conectar.

A ver si alguien puede echarme una mano.

Saludos.