如何跟踪和解决Android App的BLASTBufferQueue Faking releaseBufferCallback?

问题描述 投票:0回答:1

我最近开始使用 Kotlin 和 Jetpack Compose 构建我的第一个应用程序。到目前为止,我还没有在 Logcat 中看到这个错误显示,由于我缺乏经验,我很困惑!我正在清理代码,将函数提取到其他类文件,清理我创建的一个可组合项的 UI,现在我正在使用以下条目为 BLASTBufferQueue 获取常量 Logcat 条目:

14:03:10.687  E  [VRI[MainActivity]#0](f:0,a:3) Faking releaseBufferCallback from transactionCompleteCallback
14:03:10.687  E  [VRI[MainActivity]#0](f:0,a:3) Faking releaseBufferCallback from transactionCompleteCallback
14:03:10.704  E  [VRI[MainActivity]#0](f:0,a:3) Faking releaseBufferCallback from transactionCompleteCallback
14:03:10.704  E  [VRI[MainActivity]#0](f:0,a:3) Faking releaseBufferCallback from transactionCompleteCallback
14:03:10.722  E  [VRI[MainActivity]#0](f:0,a:3) Faking releaseBufferCallback from transactionCompleteCallback
14:03:10.722  E  [VRI[MainActivity]#0](f:0,a:3) Faking releaseBufferCallback from transactionCompleteCallback
14:03:10.738  E  [VRI[MainActivity]#0](f:0,a:3) Faking releaseBufferCallback from transactionCompleteCallback

这似乎发生在每次重组时,但我不知道我改变了什么导致它。

这段代码相关吗?

使用模拟器时似乎不是问题,目前是 Resizable API 33.

但是在 Pixel 7 Pro 物理设备上使用时确实会出现

现在,在物理设备上,自从我上次开发我的应用程序以来,我确实使用 12 月更新(内部版本号:TQ1A.221205.011)对其进行了更新。更新是否会导致这些 Logcat 条目发生变化?

android kotlin android-jetpack-compose logcat
1个回答
32
投票

以下是我得到的与此问题相关的一些发现。

1) 什么是 BlastBufferQueue?

我相信这一定会发生在 Android S 及更高版本中,并且在 2022 年 12 月更新之后也会发生。

BlastBufferQueue
是一种消息队列,其中应用程序布局窗口的几何形状发生变化,它将提交给 Android 平台的表面渲染器。多个应用程序发送的缓冲区将被同步。

在 Android S 之前,更改将通过

Transaction
发布。这里的缓冲区在从多个应用程序进程发送时不同步。

这个 BlastBufferQueue 有助于打开从多个应用进程发送的缓冲区之间的连接。

了解更多烧烤的链接:

https://www.jianshu.com/p/50a30fa6952e

https://www.jianshu.com/p/cdc60627df90

这是下面的代码,blastbuffer 从

ViewRootImpl
获得更新。

来源链接

2)日志的根本原因。

我能够找到添加此特定日志的提交。

提交链接

修复了在视图事务更新但缓冲区回调从未释放(在某些情况下)时发生 ANR 的问题。因此,此提交是在

TransactionCompleteCallback
完成时假释放缓冲区回调的解决方法。

在此提交中,已经提到这是一个安全的解决方法。提交中链接的根本问题是私有的。 这是 android 团队添加假释放缓冲区回调的提交更改。这就是您可能会收到此日志的原因。

最后总结一下这个日志可以放心无视

编辑: 我看到有些人因为一些溢出而导致致命的崩溃。我们必须等待 Greg 提出的 issue 的修复。 暂时,日志可以在 Logcat 窗口中静音。请参考问题下的评论。

© www.soinside.com 2019 - 2024. All rights reserved.