每次我最小化我的应用程序时它都会立即崩溃。 错误如下: stackoverflow 还要求我添加的不仅仅是代码,所以这里有一些文本。 stackoverflow 还要求我添加的不仅仅是代码,所以这里有一些文本。 stackoverflow 还要求我添加的不仅仅是代码,所以这里有一些文本。 stackoverflow 还要求我添加的不仅仅是代码,所以这里有一些文本。 stackoverflow 还要求我添加的不仅仅是代码,所以这里有一些文本。 stackoverflow 还要求我添加的不仅仅是代码,所以这里有一些文本。
2021-03-19 22:12:11.243 6919-7009/com.example.zawarudo E/AndroidRuntime: FATAL EXCEPTION: Thread-2
Process: com.example.zawarudo,PID: 6919
java.lang.IllegalStateException: No recording in progress,forgot to call #beginRecording()?
at android.graphics.RenderNode.endRecording(RenderNode.java:404)
at android.view.Surface$HwuiContext.unlockAndPost(Surface.java:1029)
at android.view.Surface.unlockCanvasAndPost(Surface.java:418)
at android.view.SurfaceView$2.unlockCanvasAndPost(SurfaceView.java:1567)
at com.example.zawarudo.GameLoopthread.run(GameLoopthread.java:53)
我的线程逻辑有错误吗?
public class GameLoopthread extends Thread {
private GameView view;
private boolean running = false;
public GameLoopthread(GameView view){
this.view = view;
}
public void setRunning(boolean run){
running = run;
}
@Override
public void run(){
Canvas c = null;
while (running){
try {
currentThread().sleep(17);
} catch (InterruptedException e) {
e.printStackTrace();
}
try{
view.getHolder().setfixedSize(1080,1920);
c = view.getHolder().lockHardwareCanvas();
c.rotate(90);
synchronized (view.getHolder()){
view.onDraw(c);
}
} finally {
{
view.getHolder().unlockCanvasAndPost(c);
}
}
}
}
}
gameThread = new GameLoopthread(this);
holder = getHolder();
holder.addCallback(new SurfaceHolder.Callback() {
@Override
public void surfaceCreated(SurfaceHolder surfaceHolder) {
gameThread.setRunning(true);
gameThread.start();
}
@Override
public void surfaceChanged(SurfaceHolder holder,int format,int width,int height) {
}
public void surfaceChanged(SurfaceHolder holder) {
}
@Override
public void surfaceDestroyed(SurfaceHolder holder) {
boolean retry = true;
gameThread.setRunning(false);
while (retry) {
try {
gameThread.join();
retry = false;
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
public class GameView extends SurfaceView implements zaInterface {
public GameMap tileMap = new GameMap();
private SurfaceHolder holder;
private GameLoopthread gameThread;
public GameView(Context context) {
super(context);
screenheight = Resources.getSystem().getDisplayMetrics().heightPixels;;
screenwidth = Resources.getSystem().getDisplayMetrics().widthPixels;
gameThread = new GameLoopthread(this);
holder = getHolder();
holder.addCallback(new SurfaceHolder.Callback() {
@Override
public void surfaceCreated(SurfaceHolder surfaceHolder) {
if (hasStarted==false) {
gameThread.setRunning(true);
gameThread.start();
hasStarted=true;
}
else{
}
}
@Override
public void surfaceChanged(SurfaceHolder holder,int height) {
}
public void surfaceChanged(SurfaceHolder holder) {
}
@Override
public void surfaceDestroyed(SurfaceHolder holder) {
/*
boolean retry = true;
gameThread.setRunning(false);
while (retry) {
try {
gameThread.join();
retry = false;
} catch (InterruptedException e) {
e.printStackTrace();
}
}
*/
}
});
}
这是我的游戏活动类
public class Gameactivity extends AppCompatactivity {
private GameView GameView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
getWindow().setflags(WindowManager.LayoutParams.flaG_FULLSCREEN,WindowManager.LayoutParams.flaG_FULLSCREEN);
getWindow().isactive();
GameMap.initialize();
GameView.initialize();
setContentView(new GameView(this));
}
}