gpt4 book ai didi

java - Android SurfaceView当前线程引用

转载 作者:行者123 更新时间:2023-12-01 09:45:29 25 4
gpt4 key购买 nike

我正在学习本游戏开发教程,但遇到了一些让我有点困惑的事情。

因此,在教程中,创建了一个扩展 SurfaceView 实现 Runnable 的类,用于管理主游戏内容 View 。表面 View 设置为主要 Activity 的内容 View ,如下所示:

public class MainActivity extends Activity {

private GameView gameView;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);

gameView = new GameView(this);
setContentView(gameView);
}

@Override
protected void onPause() {
super.onPause();
gameView.pause();
}

@Override
protected void onResume() {
super.onResume();
gameView.resume();
}
}

SurfaceView类定义如下:

public class GameView extends SurfaceView implements Runnable {
Thread gameThread = null;
private boolean playing;

public TDView(Context context) {
super(context);

// other game logic
}

public void pause() {
playing = false;
try {
gameThread.join();
} catch (InterruptedException e) {
}
}

public void resume() {
playing = true;
gameThread = new Thread(this);
gameThread.start();
}

@Override
public void run() {
while (playing) {
update();
draw();
control();
}
}
}

不要误会我的意思 - 代码工作得很好,但我很困惑 gameThread 变量在哪里实例化? 我的项目中没有任何代码行表明它确实如此,除了resume方法之外。 创建 GameView 实例时是否调用了恢复方法,或者我还缺少其他内容吗?

对不起,如果这是一个愚蠢的问题,但我什至不知道如何用谷歌搜索这个。

最佳答案

如果 Activity 未恢复,则不会调用

pause()。所以这个方法还是不错的。每次调用 pause() 时,gameThread 都不为 null。

关于java - Android SurfaceView当前线程引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38085963/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com