android在include语句中整合视图,提高性能?

时间:2013-08-02 18:08:17

标签: android performance memory layout view-hierarchy

我正在优化我的Android布局。我得到的一个建议是在include语句中重用布局。虽然我理解它的实用性,有点像面向对象的视图,但它是否会显着改善渲染时间?它是否会显着减少内存占用?它是否使视图层次结构更小?

我写这个假设有一个明确的答案,而不是讨论

感谢您的任何见解!

2 个答案:

答案 0 :(得分:1)

单独使用include可能不足以对渲染时间产生任何明显的变化。它也不应该对视图层次结构产生影响:无论是否包含部分层次结构,您都应该获得相同的层次结构。

(我假设 LayoutInflater 可以缓存最近膨胀的资源,可能会更快地扩充由最近使用的included组成的布局但似乎不太可能,除非你在你的应用程序中对它进行了基准测试,否则这将是一个不必要的微优化IMO。)

include 的优点是您的布局组织,特别是打破可重复使用的部分。大多数Android布局系统的作者Romain Guy在几年前撰写了a blog post a,其中包含了一些可能包含的提示/技巧,例如使用它将方向敏感布局与更通用的布局分开。

相比之下,ViewStub 用于布局充气时间优化;它允许您的View层次结构的某些部分被懒惰地膨胀。

答案 1 :(得分:1)

  

是否会大幅减少内存占用?

没有。这是一个包含两个具有相同内容的视图的视图。虽然视图是相同的,但视图中的每个项目必须作为单独的实例呈现,因为开发人员可能希望使用R.id.identifier选择它并更改其内容。实际上,我们假设您在2个不同的视图中包含了应用的标题。标题的内容在每个视图中不必相同。由于实例不同,因此不会节省内存。

screenshot

  

是否会显着缩短渲染时间?

不是我注意到了。你在这里获得的任何收益都可能很小。

以下是有关Android上性能优化的相关链接,以防您尚未看到它 - > http://developer.android.com/training/articles/perf-tips.html