我遇到的问题在不同的设备上似乎有所不同,但是在Logcat中我仍然收到相同的错误代码:
E / BpSurfaceComposerClient:交易失败(-1)
我怀疑问题出在我的MainThread类中的while循环中,我锁定了硬件画布并发布,因为我看到对surfaceHolder.unlockCanvasAndPost方法的源代码有评论,提到内容可能丢失。
这是我如何处理画布的简短代码:
while (running) {
startTime = System.nanoTime();
canvas = null;
try {
canvas = this.surfaceHolder.lockHardwareCanvas();
synchronized (surfaceHolder) {
this.gamePanel.update();
this.gamePanel.draw(canvas);
}
} catch (Exception e) { e.printStackTrace(); }
finally {
if (canvas != null) {
try {
surfaceHolder.unlockCanvasAndPost(canvas);
} catch (Exception e) {
e.printStackTrace();
}
}
}
在我的Huawei Mate 20 Lite上,当我在使用我的应用程序时锁定手机时,会发生此错误。发生的事情是画布变成白色,并且应用程序按其应有的方式工作(输入,循环和音频工作正常)。 在我朋友的三星Galaxy上,按“主页”按钮时,该应用程序完全崩溃。但是,此错误文本是相同的。