LibGDX soportar aplicación en segundo plano (Android)

Lecherito

Pues eso, tengo mi jueguecito que si por ejemplo bloqueas el móvil y lo vuelves a desbloquear, no se pinta nada, no sale ninguna excepción ni ningún mensaje de error. El caso es que el stage.draw() sí que es llamado en el render y solamente se pinta igual que si solo se estuviera haciendo el glClear().

Realmente no tengo ningún tipo de pausa ni nada por el estilo por lo que no debería estar pasando, no?

AbstractScreen solamente define la Stage y poco más (en las demás pantallas también pasa lo mismo y no tengo ni idea de qué puede estar pasando, alguna idea?

Lifecycle de la pantalla

Clase menú:

spoiler
FrioneL

Como seteas la View que usas para el juego? (En la Activity de Android)

Has probado con otro dispositivo?

Has puesto algun dispose de las texturas que estas usando en algun sitio? Vigila que no se este llamando al perder el foco de la aplicacion.

1 respuesta
Lecherito

#2

	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);

	AndroidApplicationConfiguration cfg = new AndroidApplicationConfiguration();
	cfg.useGL20 = true;
	cfg.useAccelerometer = false;
	cfg.useCompass = false;
	cfg.useWakelock = true;

	handler = new Handler();
	
	initialize(new TDEngine(this), cfg);
}

No hago dispose nada más que cuando llama al dispose de la screen, el cual por el log del ciclo no se ve por ningún sitio por lo que las texturas siguen por ahí

En otros dispositivos pasa lo mismo, de hecho el bug me lo reportó otra persona

1 respuesta
FrioneL

#3 Pues ni idea. A mi eso me paso una vez que cree un layout para los Ads y se ve que estaban causando problemas en el repintado al maximizar, y tuve que esconderlos manualmente al hacer el pause y volver a pintarlos cuando el resume.

Tiene pinta de que se esta haciendo un dispose de las texturas al minimizar por parte de libgdx para liberar recursos y que luego al maximizar, no es capaz de volver a crearlo.

Tienes la ultima version del framework? Pregunta en su foro que suelen contestar rapido los admins.

A lo de #1 de porque se llama resume/pause varias veces, es el ciclo de vida de las Activity de Android:

1 respuesta
Lecherito

#4 Ya, no saben realmente qué es lo que pasa xD, y tengo la 0.9.9 y me parece que si, que voy a bajarme la 1

Lecherito

Con la 1 me pasa lo mismo, además de que no sé manejar bien las cámaras nuevas xDDD

Lecherito

Resulta que una clase que estaba usando para abstraer el dispose y show de las pantallas me estaba jodiendo todo eso, ahora ya renderiza bien, se ve que estaba perdiendo el contexto y se fastidiaba todo.

Ahora siempre me sale en el menú, a ver si puedo arreglar eso xD

1 respuesta
FrioneL

#7 xdd vigila con los dispose. Hazlos cuando se cierra la aplicacion o sales de escenas que no vas a necesitar mas.

1 respuesta
Lecherito

#8 No no, no era problema del dispose si no de la abstracción alrededor de ello, ha sido cambiar los Screenmanager.dispose por screen.dispose y todo sobre ruedas! (y los setScreen igual)

Usuarios habituales

  • Lecherito
  • FrioneL