Programación y Desarrollo para Android Subforo exclusivo para temas de programación de software para PDAs y desarrollo de aplicaciones, interfaces, etc bajo Android

Respuesta
 
Herramientas
  #1  
Viejo 23/02/14, 21:03:04
Array

[xs_avatar]
Duqe Duqe no está en línea
Usuario veterano
 
Fecha de registro: jun 2009
Mensajes: 668
Modelo de smartphone: Nexus One

getLastLocation desde IntentService

Buenas.

Pues mi duda está clara, tengo un intentservice el cual me descarga unos datos de internet, pero necesita la localización. El problema es que parece que el service termina el ciclo de vida antes de que el método onConnected() sea llamado. Vamos, antes de que el LocationClient tenga la conexión.

He pensado en crear una alarma si el objeto Locatoin es null, para que se ejecute de nuevo a los pocos segundos. Pero no sé si esto será lo adecuado. Aparte de que tengo una actividad que tiene una progressbar en otra actividad (que puede estar abierta o no cuando se ejecute el IntentService) la cual se muestra cuando el servicio se ejecuta, y desaparece cuando termina.

Así que busco algún consejo sobre cómo sería la mejor forma de hacerlo.

Gracias por adelantado.

Pd: He seguido el tutorial de Android Developers:

http://developer.android.com/intl/es...e-current.html
Responder Con Cita


  #2  
Viejo 23/02/14, 23:22:26
Array

[xs_avatar]
kriogeN kriogeN no está en línea
Colaborador/a
· Votos compra/venta: (1)
 
Fecha de registro: oct 2010
Localización: Murcia
Mensajes: 4,637
Modelo de smartphone: Samsung Galaxy S7 Edge SM-G935F
Tu operador: Vodafone
El IntentService termina cuando termina el onHandleIntent (salvo que se haya puesto a ejecutarse otro IntentService igual antes de que ese IntentService termine, en ese caso caso se volverá a ejecutar el onHandleIntent otra vez para el Intent nuevo), es decir, antes de que se ejecute el onConnected porque el código del LocationClient se ejecuta cuando el onHandleIntent termina.

Es un poco lioso, pero llevo 2 semanas peleándome con IntentServices y los tengo bastante trillados.

Yo tengo que hacer una cosa parecida, necesito una respuesta de un BroadcastReceiver para continuar la ejecución, y lo que hago es lo siguiente:

Creas un AtomicBoolean a nivel global, lo inicias a false, y justo después de iniciar el LocationClient haces:

do {
Thread.sleep(1000);
} while (!gpsIniciado.setAndCompare(true,false);

Y en el onConnected haces:

gpsIniciado.set(true);

De todas formas aún con todo esto, no se si el IntentService es lo más apropiado para lo que quieres hacer, sin conocer en detalle tu aplicación es muy probable que con un AsyncTask sea suficiente.
Responder Con Cita
  #3  
Viejo 24/02/14, 00:05:05
Array

[xs_avatar]
Duqe Duqe no está en línea
Usuario veterano
 
Fecha de registro: jun 2009
Mensajes: 668
Modelo de smartphone: Nexus One

Entiendo lo que me dices. El problema del sleep es que me bloquearía la UI.

Al final debo de hacerlo desde un service, ya que se puede ejecutar tanto desde una actividad, con un botón que activaría el usuario, como periódicamente y en 2o plano. Y ahí creo que no encajaría una asynctask. Y aparte de los Services, no se de qué otra forma podría hacerlo.
Responder Con Cita
  #4  
Viejo 25/02/14, 07:27:33
Array

[xs_avatar]
Duqe Duqe no está en línea
Usuario veterano
 
Fecha de registro: jun 2009
Mensajes: 668
Modelo de smartphone: Nexus One

Al final creo que voy a olvidarme del IntentService, y lo haré con un Service.
Responder Con Cita
Respuesta

Estás aquí
Regresar   Portal | Indice > Todo sobre Android > Programación y Desarrollo para Android



Hora actual: 23:46:44 (GMT +2)



User Alert System provided by Advanced User Tagging (Lite) - vBulletin Mods & Addons Copyright © 2025 DragonByte Technologies Ltd.

Contactar por correo / Contact by mail / 邮件联系 /