2016-09-17 143 views
1

我是自由职业者解决android应用程序的崩溃。它发生在启动时,我知道这是因为activity_main.xml。它有太多的观点,太多的嵌套层次。除此之外(我将尽力减少)改善布局性能

什么是其他策略来提高Android的布局性能?

无法更改或简化用户界面。 例如: - 对于重复元素(50-100),使用'include'会使它更快吗? - 用于在样式中定义属性而不是在每个项目中定义属性。

+0

把布局。 –

+0

我在寻找一般建议 –

+1

用'listview'或'recyclerview'替换重复的项目。另外使用'PercentRelativeLayout'来代替'RelativeLayout'来获得更多的布局选项。 –

回答

3

我最近在努力改善应用程序的性能和renderd快速流畅的UI让我分享你我的经验:

的性能在UI方面的愿景是:

Lower the latency of screen draws 
Create fast, consistent frame rates to avoid jank/lag. 

还有是布局的一些拇指规则。

最小视图层次结构。

最小背景drawbles

最小化窗口的透支:使用drawble视图

最小化透支左代替图像和TextView的水平对准。

使用列表/ recyclerview时经常重复查看

等等。让我分享一些链接这是真正有用的

https://medium.com/@elifbon/android-application-performance-step-1-rendering-ba820653ad3#.pp7hpnv07

https://www.safaribooksonline.com/library/view/high-performance-android/9781491913994/ch04.html

https://riggaroo.co.za/optimizing-layouts-in-android-reducing-overdraw/

https://www.hackerearth.com/notes/rendering-performance-in-android-overdraw/

Letme知道这是否是有帮助的。欢呼声

1

我已经回答了相关的question之前,我的建议仍然适用于此主题。

处理负载:

延迟加载 - 负载只有一张是真的需要现在的信息。示例:电影应用程序:除非用户告诉你这样做,否则只加载那些最新的电影而不是旧电影。这里的想法是只决定首先加载哪些内容,然后再加载其他内容。负载越小,性能越好,同时不牺牲好内容。

缓存 - 如果你继续从你的服务器的机会下载东西都可能要花很长时间来加载和闪屏将是可见的时间或一些UI的周期较长,当你这样做可能会专门冻结在主线程中。随着缓存的增加,您将需要从网络中获取更少的数据,因为您已经下载了一些数据。

创建视图时需要考虑的事项。

  • 避免超深层嵌套视图。
  • 避免深层嵌套权重。
  • 对于图像加载使用像毕加索一些流行的库,滑翔等

不使用“包括”使得它更快?

有点,重用布局功能特别强大,因为它允许您创建可重用的复杂布局。例如,是/否按钮面板,或带有说明文字的自定义进度栏。这也意味着您的应用程序的任何元素都可以在多个布局中提取,分别管理,然后包含在每个布局中。因此,尽管您可以通过编写自定义视图来创建单独的UI组件,但通过重新使用布局文件,您可以更轻松地完成此任务。

来源:Official docs

附录

当事情仍然是错误的,Android框架没有提供你真正需要的;最后一种方法是通过延伸ViewViewGroup创建您自己的视图。创建您自己的视图/布局需要时间和精力,但您可以获得更多的控制,因为它是您自己的视图/布局实现,例如您有权更改世界