2016-07-12 3 views
0

私のゲームでは、スレッドがあります。このスレッドは、アクティビティ内のonPause()で一時停止され、メインゲームクラスのsurfaceCreatedに再開されます。携帯電話のロックとロック解除後にアプリを再オープンするときのSurfaceViewの問題

@Override 
public void surfaceCreated(SurfaceHolder holder) { 
    if(gt == null) { 
    gt = new GameThread(getHolder(), this); 
    gt.setRunning(true); 
    gt.start(); 
    } 
} 

(ゲームから呼び出される)onPause:

public void onPause(){ 
    ... other stuff 
    if(gt != null){ 
    try { 
     gt.setRunning(false); 
     gt.join(); 
     gt = null; 
    }catch(Exception e){ 
     e.printStackTrace(); 
    } 
    } 
} 

しかし、画面がロックされ、ロックが解除されたときに、いくつかの理由で、スレッドが再び開始されません。最近のアプリのリストを開いてそこからアプリを開くと、スレッドが再開します。

どうしてこのようなことが起こり、どうすれば解決できますか?

答えて

2

表面は(あなたの活動が破壊されていない)、この場合には再作成されていないので、あなたの携帯電話のロックを解除するときの方法surfaceCreatedが呼び出されないので、あなたは、ないsurfaceCreatedで、onStart()であなたのスレッドを開始する必要があります。ただし、onStart()です。

+0

それは働いた。ありがとう – Zoe

関連する問題