锁定和解锁手机后重新打开应用程序时SurfaceView的问题

时间:2016-07-12 15:40:04

标签: java android

在我的游戏中,我有一个帖子。此活动在活动的onPause()暂停,并在主游戏类的surfaceCreated中重新启动。

@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();
    }
  }
}

但由于某种原因,当屏幕被锁定和解锁时,线程不会再次启动。当我打开最近的应用程序列表并从那里重新打开应用程序时,线程重新启动。

为什么会发生这种情况,我该如何解决?

1 个答案:

答案 0 :(得分:2)

你应该在onStart()而不是surfaceCreated中开始你的主题,因为在这种情况下不会重新创建表面(你的活动没有被破坏),所以方法surfaceCreated不是解锁手机时呼叫。但是,onStart()是。