我正在开发一个包含大量自定义视图的应用程序,并遇到了一个非常复杂的性能问题。它们用于测量和绘制的时间是高的(典型地> = 30ms)。要提供更多详细信息:这是一个自定义ViewGroup
(扩展RelativeLayout
),其中包含自定义视图(尽管扩展RelativeLayout
)。
所以我想到了解决这些性能问题可能是更好/更快的方法:优化子项和布局或切换到完全自定义绘制的视图(线条,矩形和类似的东西) ?
你们中有谁有经验吗?或者甚至一些人做了一些基准并愿意分享它们?
答案 0 :(得分:2)
简单的方法是简化和展平当前的视图层次结构,也许你将能够使测量和绘图过程更便宜(或者至少是体面的)。你没有张贴布局,所以没有具体的说法,我看到你在RelativeLayouts
中提到了RelativeLayouts
,也许你可以删除一个并将视图向上移动一级(即使是每个级别都要计算(特别是嵌套RelativeLayouts
)。您可能已经知道了,但布局中的merge
和include
标记可能非常有用。
RelativeLayout
是作为常规窗口小部件构建的,因此很可能无法实现自定义设计布局的性能。让当前布局扩展RelativeLayout
以扩展ViewGroup
并手动实现子项的测量和布局会更有意义,尤其是当您可能知道应用程序中的用例场景时(例如{ {1}}总是需要处理它可能存在的所有大小约束情况,另一方面,如果你知道自定义视图具有一定的大小,你的自定义布局可以更快地处理这个问题。)
与完全自定义绘制的视图相关,它是一个选项,但它取决于布局的复杂程度。
甚至有些人做了一些基准并愿意分享它们?
我不知道各种观点基准(很可能不适用于您的具体情况)会有所帮助。