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


 
Herramientas
  #1  
Viejo 23/02/14, 21:03:04
Avatar de Duqe
Duqe Duqe no está en línea
Usuario veterano
Mensajes: 668
 
Fecha de registro: jun 2009
Mensajes: 668
Modelo de smartphone: Nexus One
Versión de ROM: SuperFroyo 6.0
Mencionado: 0 comentarios
Tagged: 0 hilos
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
Avatar de kriogeN
kriogeN kriogeN no está en línea
Colaborador/a
Mensajes: 4,637
Compra y venta: (1)
 
Fecha de registro: oct 2010
Localización: Murcia
Mensajes: 4,637
Modelo de smartphone: Samsung Galaxy S7 Edge SM-G935F
Versión de ROM: CM13 - CM 11
Tu operador: Vodafone
Mencionado: 60 comentarios
Tagged: 3 hilos
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
Avatar de Duqe
Duqe Duqe no está en línea
Usuario veterano
Mensajes: 668
 
Fecha de registro: jun 2009
Mensajes: 668
Modelo de smartphone: Nexus One
Versión de ROM: SuperFroyo 6.0
Mencionado: 0 comentarios
Tagged: 0 hilos
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
Avatar de Duqe
Duqe Duqe no está en línea
Usuario veterano
Mensajes: 668
 
Fecha de registro: jun 2009
Mensajes: 668
Modelo de smartphone: Nexus One
Versión de ROM: SuperFroyo 6.0
Mencionado: 0 comentarios
Tagged: 0 hilos
Al final creo que voy a olvidarme del IntentService, y lo haré con un Service.
Responder Con Cita
Respuesta

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


Reglas de Mensajes
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Las caritas están On
Código [IMG] está On
Código HTML está Off

Saltar a Foro



Hora actual: 09:50:14 (GMT +2)

Cookies settings
Powered by vBulletin™
Copyright © vBulletin Solutions, Inc. All rights reserved.
 
HTCMania: líderes desde el 2007