Android应用程序中奇怪的图形伪影

Posted

技术标签:

【中文标题】Android应用程序中奇怪的图形伪影【英文标题】:Strange graphics artefacts in Android app 【发布时间】:2017-05-29 10:28:54 【问题描述】:

我在我的应用程序中间歇性地观察到奇怪的图形伪影,如下所示。这是三星 Galaxy S3 的屏幕截图。我只在这个特定的手机上观察到它。我在三星 Galaxy Tab S4 和 HTC One 上运行过该应用程序,但从未在任何一个上观察到此问题 - 尽管我承认我主要使用 S3 进行开发。

我认为问题可能是绘制到 Canvas 时的某种并发冲突(我使用的是基本的 android 渲染方法,没有使用 OpenGL 或任何东西),因为我可以清楚地识别其他 UI 元素的重复单元,所以我同步了所有绘制到画布或与画布交互的代码,我仍在观察它的发生。

它会在大约 30-90 秒后自行清除,这可能是由于它执行了定期计划的内存清理操作 - 所以这可能是可用内存不足的表现?

如果我有足够的代表,我会为此付出相当大的代价。任何帮助表示赞赏。希望有人认识到这个特殊问题。

【问题讨论】:

您是否尝试在View#setLayerType(View.LAYER_TYPE_HARDWARE, null) 上使用硬件层进行绘图? 抱歉回复晚了。我会试一试。证明图形错误不再发生可能需要一段时间,但如果能解决问题,我会确保将赏金奖励给您。 将作为答案发布。 今天晚些时候到期时我会增加赏金。 【参考方案1】:

应用硬件层:

setLayerType(View.LAYER_TYPE_HARDWARE, null);

【讨论】:

嗨,Aziz,我仍然会遇到您建议的修复程序偶尔出现的图形问题 - 尽管我认为它使显示看起来更好一些,所以至少我仍然会投票赞成您的答案。谢谢。 我已经获得了赏金,因为我只是意识到如果我不这样做它就会消失在以太中,但我仍在寻找答案。

以上是关于Android应用程序中奇怪的图形伪影的主要内容,如果未能解决你的问题,请参考以下文章

ASP.Net 应用程序中奇怪的 GAC 错误

Chrome 中奇怪的 CSS 边框问题

iPhone应用程序中奇怪的状态栏偏移

iOS6 中奇怪的 SplitView/NavigationController 行为

C ++中奇怪的运行时异常

Firefox 中奇怪的引导进度条行为