在我的游戏中,我有一个帖子。此活动在活动的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();
}
}
}
但由于某种原因,当屏幕被锁定和解锁时,线程不会再次启动。当我打开最近的应用程序列表并从那里重新打开应用程序时,线程重新启动。
为什么会发生这种情况,我该如何解决?
答案 0 :(得分:2)
你应该在onStart()
而不是surfaceCreated
中开始你的主题,因为在这种情况下不会重新创建表面(你的活动没有被破坏),所以方法surfaceCreated
不是解锁手机时呼叫。但是,onStart()
是。