Il gioco Android diventa vuoto dopo aver premuto a casa e riavviato
-
24-09-2019 - |
Domanda
Sto realizzando un gioco Android con un'attività chiamata Game, una SurfaceView chiamata GameView e un thread chiamato GamethRead. Il gioco è OnCreate (), creo un nuovo GameView, che fa un nuovo gamethread, in cui viene effettuata tutta la logica del gioco e il disegno di tela.
Tuttavia, sto avendo alcune difficoltà di ciclo di vita. Quando premo indietro e riavvio, funziona bene, ma quando premo a casa e lo riavro, tutto ciò che vedo è uno schermo vuoto. Ecco il gameview onsurfacecreated () e onsurfacedestroyed ():
@Override
public void surfaceCreated(SurfaceHolder holder) {
mThread.mRunning = true;
mThread.mWidth = getWidth();
if(mThread.mWidth > 550) mThread.mWidth = 550;
mThread.mHeight = getHeight();
try {
mThread.start();
} catch(IllegalThreadStateException e) {
}
}
@Override
public void surfaceDestroyed(SurfaceHolder holder) {
// Wait for the secondary thread to end before finishing
boolean retry = true;
mThread.mRunning = false;
while (retry) {
try {
mThread.join();
retry = false;
} catch (InterruptedException e) {
}
}
}
Soluzione
Nella mia esperienza, il pulsante posteriore termina l'attività, quindi quando lo riavvii, il metodo OnCrea viene chiamato di nuovo.
Il pulsante Home invece non finisci l'attività, quando si preme il pulsante Home, viene chiamato il metodo OnPause dell'attività e quando lo riavvii, il metodo chiamato è OnResume.
Immagino che tu abbia del codice nell'oncrea che è responsabile della creazione di SurfaceView. Prova ad aggiungere questo codice al metodo OnResume (prevalere) ...