锁定屏幕时,硬件画布会丢失其内容

时间:2019-03-29 14:16:04

标签: java android canvas

我遇到的问题在不同的设备上似乎有所不同,但是在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上,按“主页”按钮时,该应用程序完全崩溃。但是,此错误文本是相同的。

0 个答案:

没有答案