我有一个 surfaceView 设置并正在运行,但是当我恢复它时,我收到一条错误消息,指出线程已经启动。当应用程序进入后台然后返回前台时,正确的处理方式是什么?我已经修修补补并设法让应用程序在不崩溃的情况下返回......但是 surfaceView 不再绘制任何东西。我的代码:
@Override
public void surfaceCreated(SurfaceHolder holder) {
Log.e("sys","surfaceCreated was called.");
if(systemState==BACKGROUND){
thread.setRunning(true);
}
else {
thread.setRunning(true);
thread.start();
Log.e("sys","started thread");
systemState=READY;
}
}
@Override
public void surfaceDestroyed(SurfaceHolder holder) {
Log.e("sys","surfaceDestroyed was called.");
thread.setRunning(false);
systemState=BACKGROUND;
}
最佳答案
简单的解决方案是简单地杀死并重新启动线程。创建方法 resume() - 创建线程对象并启动它 - 和 pause() - 终止线程(参见 Lunarlander 示例) - 在您的 SurfaceView 类中,并从 surfaceCreated 和 surfaceDestroyed 调用它们以启动和停止线程。
现在在运行 SurfaceView 的 Activity 中,您还需要从 Activity(或 fragment )的 onResume() 和 onPause() 调用 SurfaceView 中的 resume() 和 pause() 方法。这不是一个优雅的解决方案,但它会起作用。
关于android - 如何暂停和恢复 surfaceView 线程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3527621/