Jump to content
UnitySpain
Sign in to follow this  
oscar363

Cargar gps en cuarentena

Recommended Posts

Estoy desarrollando un juego de geolocalización para android, es decir, que carga las coordenadas y el mapa de google, etc.

Funciona perfectamente, y la verdad es que me está quedando bien, todo perfecto. El problema que tengo es que cuando está buscando la localización, el juego se queda colgado, solo por 2-3 seg mientras busca las coordenadas, pero es molesto, obviamente. Además porque mi juego consulta cada 5 seg para ver si te has movido del sitio. Así que un juego que cada 5 seg se queda colgado... como que no.

Ya realizo la busca de coordenadas en una cuarentena, para que se haga en paralelo, pero aún así se queda colgado.

Si lo necesitáis, os pongo el código entero, pero de momento paso porque es mucho código. Pongo un resumen del algoritmo:

if (temporizador > 5f)
{
	StartCoroutine(Refresh());
}

IEnumerator Refresh()
{
	cargar coordenadas ();
	if (está desactivado sistema gps)
		yield break;   // salir de la cuarentena

    while (no encuentra coordenadas && esperado < tiempoEspera)
    {
    	yield new WaitForSeconds (1);
        ++ esperado          // contar los segundos esperados
    }
    if (esperado >= tiempoEspera)  // si se ha superado el tiempo de espera salir
      yield break;
      
    sacar coordendas y sacar distancia a coordenadas anteriores
    if (distancia > x) // te has movido lo suficiente
    	cargar mapas de google
    else
      terminar (no hace faltar cargar los mapas si estamos en el mismo sitio)
}

Como veis, solo descargo los mapas de google de internet si me he movido de la posición, pero el juego se me queda colgado aunque no me mueva. Y sé que no los descarga, porque tengo booleanos por ahí puestos y ya lo he comprobado. Así que eso no es.

Es al cargar la posición, que la app se queda colgada hasta que la encuentre.

Share this post


Link to post
Share on other sites

En pseudocódigo no creo que lo veamos. Aparte, entiendo que el bloqueo se producirá durante el proceso de GPS, código que no veo. El WaitForSeconds a 1 me parece muchísimo para una tarea así, que es donde estará la mayor parte del tiempo esperando. Y donde está el código después de llamar a la coroutine? Hay código de espera también?

Share this post


Link to post
Share on other sites

Para estos temas de llamadas bloqueantes no soy muy fan de las coroutines (sera por que vengo de lenguajes de mas bajo nivel), has pensado en utilizar hilos?

Share this post


Link to post
Share on other sites
Sign in to follow this  

×
×
  • Create New...