Home Menu

Menu



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 27/10/16, 11:39:50
Avatar de pelegren
pelegren pelegren no está en línea
Usuario poco activo
Mensajes: 2
 
Fecha de registro: oct 2016
Mensajes: 2
Tu operador: Movistar
Mencionado: 0 comentarios
Tagged: 0 hilos
¿por qué se ejecuta antes una parte del código?

Hola, tengo que obtener la latitud y la longitud para meterlos en un MapView.
Lo obtengo de una base de datos que está alojada en un servidor por lo que hago una petición a la base de datos.

Mi problema es que la primera vez funciona perfecto pero las siguientes me da latitud y longitud 0.0 porque una parte del código se ejecuta antes que otra. Algunas veces puede llegar a funcionar de forma algo aleatoria.

Me da la sensación que se debe a que el código sigue ejecutándose aunque aunque no se haya recibido los datos de la base de datos. Pero lo que me extraña es que la primera vez funciona correctamente pero si en android voy a la Activity anterior pulsando el botón "Atrás" típico de Android y vuelvo a lanzar la activity entonces se me ejecuta una parte del código antes que otra.

Para saber que se va ejecutando antes he hecho algunos System.out.println().
Os pongo las fotos de lo que sucede.

Subo el .java a este link ya que es un poco largo aunque realmente lo que me interesa es la zona de "latitud, longitud, cliente.get, y mapview" del MapVieW.

https://we.tl/EEbPwRSbm7

Y aquí os dejo las fotos de los System.out.println() que se van ejecutando.

No entiendo porque en ambas ejecuciones no se ejecuta primero la parte de cliente.get .... y además en la primera ejecución obtengo resultados distintos a la segunda.

Primera ejecución
https://subefotos.com/ver/?87cc582d1...bo.jpg#codigos

Segunda ejecución al volver a la activity anterior, hacer un click y volver de nuevo a la activity mostrarinfoanuncio..

https://subefotos.com/ver/?dc2fdd4e2...fo.jpg#codigos


Espero que alguien me pueda ayudar porque me saca de quicio este historia

Un saludo a todos!
Responder Con Cita


  #2  
Viejo 27/10/16, 12:06:07
Avatar de pelegren
pelegren pelegren no está en línea
Usuario poco activo
Mensajes: 2
 
Fecha de registro: oct 2016
Mensajes: 2
Tu operador: Movistar
Mencionado: 0 comentarios
Tagged: 0 hilos
problema resuelto gracias al aporte de un forero

Hola, eso que indicas, te esta ocurriendo, porque el objeto AsyncHttpClient, es un cliente que realiza peticiones asíncronas, es decir, que levanta un nuevo thread para realizar la peticion dejando libre el thread principal para que continue su ejecución.

El AsyncHttpClient.get(...) funciona de la siguiente forma, si la petición a tenido éxito, se ejecuta el método onSuccess(...) y si por el contrario, la petición a fallado o algo, se ejecuta el metodo onFailure(...).

Con todo esto, creo... que para solucionar tu problema, la carga del mapa, debes hacerla dentro del cuerpo del método onSuccess(...){ ... }, ya que es cuando la petición tiene éxito, es cuando se deben cargar los datos en el mapa.
Tal y como lo estas haciendo, lo que te esta ocurriendo, es que estas intentando cargar los datos en el mapa antes de que la petición del cliente AsyncHttpClient se haya procesado.

Bueno, prueba eso, a cargar el mapa en las ultimas lineas del método onSuccess en lugar de ponerlo directamente en el onCreate como lo estas haciendo y ya nos cuentas. Un saludo
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: 03:12:58 (GMT +2)

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