我正在开发一个包含大量自定义视图的应用程序,并遇到了一个非常复杂的性能问题.它们用于测量和绘制的时间是高的(典型地> = 30ms).提供更多细节:它是一个自定义viewGroup(扩展RelativeLayout),带有自定义视图(尽管扩展RelativeLayout),因为它是它的子项.
所以我想到了解决这些性能问题可能是更好/更快的方法:优化子项和布局或切换到完全自定义绘制的视图(线条,矩形和类似的东西)?
你们中的任何一个人都有过这方面的经历吗?甚至一些人做了一些基准并且愿意分享它们?
解决方法:
简单的方法是简化和展平当前的视图层次结构,也许你将能够使测量和绘图过程更便宜(或者至少是体面的).你没有发布布局,所以没有具体的说法,我看到你在RelativeLayouts中提到过RelativeLayouts,也许你可以删除一个并将视图向上移动一级(即使添加其他帮助器视图的费用) ,每个级别都很重要(特别是嵌套RelativeLayouts).您可能已经知道了,但布局中的合并和包含标签可能非常有用.
标准SDK中的RelativeLayout是作为通用小部件构建的,因此很可能无法实现自定义设计布局的性能.让当前布局扩展RelativeLayout以扩展ViewGroup并手动实现子项的测量和布局会更有意义,尤其是当您可能知道应用程序中的用例场景时(例如,RelativeLayout总是需要处理所有大小约束)如果您知道自定义视图将具有特定大小,那么另一方面,您的自定义布局可以更快地处理这种情况.
与完全自定义绘制的视图相关,它是一个选项,但它取决于布局的复杂性.
Or even some done some benchmarks and is willing to share them?
我不知道各种视图基准(很可能不适用于您的具体情况)将有所帮助.