我正在开发一个具有大量自定义 View 的应用程序,并遇到了其中一个非常复杂的性能问题。他们测量和绘图所用的时间太长(>= 30ms 典型)。提供更多详细信息:这是一个自定义 ViewGroup (扩展 RelativeLayout ),带有自定义 View (尽管扩展 RelativeLayout),因为它是子项。

所以我想到了摆脱这种性能问题的更好/更快的方法是什么:优化子项和布局或切换到完全自定义的绘制 View (线条、矩形和类似的东西)?

你们中有人有这方面的经验吗?或者甚至有些人做了一些基准测试并愿意分享它们?

最佳答案

简单的方法是简化和扁平化当前的 View 层次结构,也许您可​​以使测量和绘图过程更便宜(或至少体面)。你没有发布布局所以没有什么具体要说的,我看到你在 RelativeLayouts 中提到了 RelativeLayouts ,也许你可以删除一个并将 View 上移一层(即使增加其他辅助 View 的费用也是如此) , 每个级别都很重要(尤其是嵌套 RelativeLayouts )。您可能已经知道,但是布局中的 mergeinclude 标签可能非常有用。

标准 SDK 中的 RelativeLayout 是作为通用小部件构建的,因此它很可能无法实现自定义设计布局的性能。使您当前的布局扩展 RelativeLayout 以扩展 ViewGroup 并手动实现子项的测量和布局会更有意义,特别是因为您可能知道应用程序中的用例场景(例如 RelativeLayout 总是需要处理所有大小约束在这种情况下,如果您知道自定义 View 将具有特定大小,则另一方面,您的自定义布局可以更快地处理此问题)。

与完全自定义的绘制 View 相关,这是一个选项,但取决于布局的复杂性。



我看不出各种 View 基准(很可能不适用于您的特定情况)会有什么帮助。

10-07 19:40
查看更多