提高布局性能

问题描述 投票:0回答:3

我是一名自由职业者,致力于解决 Android 应用程序的崩溃问题。它发生在启动时,我知道这是因为 Activity_main.xml。它有太多的视图、太多的嵌套级别。除此之外(我会尽力减少)

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

用户界面无法更改或简化。 例如:

  • 对于重复元素(50 - 100),使用“include”是否会使速度更快?
  • 在样式中定义属性而不是在每个项目中定义属性也是如此。
android performance android-layout
3个回答
4
投票

我最近一直致力于提高应用程序的性能并呈现快速流畅的用户界面让我分享我的经验:

UI方面的性能愿景是:

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

还有一些布局的经验法则。

最小视图层次结构。

最小背景绘制

最小化窗口的过度绘制:

最大限度地减少视图的透支

使用左绘制而不是水平对齐的图像和文本视图。

重复视图时经常使用列表/回收器视图

还有更多。让我分享一些非常有用的链接

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/

让我知道是否有帮助。干杯


2
投票

您可以尝试从 https://developer.android.com,

进行操作

优化布局

  1. 检查您的布局
  2. 修改您的布局
  3. 使用 Lint

以及

提高布局性能

  1. 优化布局层次结构
  2. 通过
  3. 重新使用布局
  4. 按需加载视图
  5. 通过
  6. 重新使用布局

1
投票

我之前回答过相关的问题,我的建议仍然适用于这个主题。

处理负载:

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

缓存 - 如果您继续从服务器下载内容,则可能需要很长时间才能加载,并且您的启动屏幕将在较长时间内可见,或者您的某些 UI 可能会冻结,特别是当您在主窗口中执行此操作时线。通过缓存,您将需要从网络获取更少的数据,因为您已经下载了其中一些数据。

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

  • 避免超深嵌套视图。
  • 避免深层嵌套权重。
  • 对于图像加载,请使用一些流行的库,如 Picasso、Glide 等。

使用“include”是否会使速度更快?

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

来源:官方文档

附录

当事情仍然出错并且 Android 框架不能提供你真正需要的东西时;最后一种方法是通过扩展 View

ViewGroup
创建自己的视图
。创建您自己的视图/布局需要时间和精力,但您可以获得更多控制权,因为它是您自己的视图/布局实现,比方说您有能力改变世界

© www.soinside.com 2019 - 2024. All rights reserved.