Surface::setbuffersDimensions 日志被垃圾邮件

Surface::setbuffersDimensions Log being spammed

我构建了一个 Android 应用程序,它在平板电脑上运行良好并且符合预期:Acer。 7寸API21.

我最近买了一台新平板电脑:Acer。 10寸API22.

现在我的日志中充斥着这一行。

04-12 18:23:27.371 8776-9082/com.callbell.callbell D/Surface: Surface::setBuffersDimensions(this=0x7f9aa44000,w=800,h=1280)

并且屏幕将随机冻结并变为空白。我没有在日志中看到任何错误,我能找到的关于此日志行的唯一参考是这里

https://android.googlesource.com/platform/frameworks/native/+/fe94bd262bc0a33d709aee8fb70c1369656b479b/libs/gui/Surface.cpp

更新 我已经在几台设备上尝试过,并取得了不同程度的成功。

没有问题:

三星 Galaxy Tab 7

三星 Galaxy Tab 10

宏碁 Iconia 8

问题:

宏碁 Iconia 10

此日志表示您屏幕上的内容正在重绘。
它仅在少数设备上显示,但无论您使用什么设备,您都可以在开发人员选项中启用 'hardware layers updates' 或 'gpu view updates',您将看到正在重绘的闪烁区域。
此外,如果问题存在于一台设备上,则它也可能存在于其他设备上。

当我们有带光标的 EditText 时会出现这些日志,并且光标闪烁负责重绘屏幕。

Surface::setBuffersDimensions(this=0x7f4ccc7c00,w=1080,h=1920)
D/OpenGLRenderer: 工作线程 0x7f7c07f000 运行

我做的时候

android:cursorVisible="false"

这些日志不见了。

因此,当工作室屏幕变成带有这些日志的垃圾邮件时,它提醒开发人员检查 UI 绘图模式。

如果其他人发现此问题,请确保您没有 ProgressBar 之类的东西,这样您就不会在 WebView 完成加载后停止呈现。 在 Xamarin.Android 中,我必须从 WebViewClient 覆盖 OnPageFinished,并设置 progressBar.Visibility = ViewStates.Gone;。还有一个 link 到 GitHub 回购(不是我的),它有一些其他的 WebViewClient 覆盖实现:

        public class MyWebViewClient : WebViewClient
    {
        public override bool ShouldOverrideUrlLoading(WebView view, string url)
        {
            view.LoadUrl(url);
            return false;
        }

        //More overrides: https://github.com/xamarin/monodroid-samples/blob/master/MonoIO/UI/MapFragment.cs
        public override void OnPageFinished(WebView view, string url)
        {
            base.OnPageFinished(view, url);
            progressBar.Visibility = ViewStates.Gone;
            view.Visibility = ViewStates.Visible;
        }

    }