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) {
        }
    }       
}
È stato utile?

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) ...

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top