改善重型布局的加载时间

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

我有一个应用程序,其中有很多活动,并且所有活动的布局都有很多视图(TextViews,以不同样式显示不同类型的数据,ImageViews 等)。

当活动加载时,它们需要太多时间来加载布局/UI(超过一秒)。

问题: 有没有办法减少加载 Activity 所需的时间,因为 Activity 加载 UI 的时间太长?

我所拥有的简短描述:

  • 所有布局至少有30-35次浏览
  • 我正在使用相对布局
  • 我不是嵌套布局,大多数视图是相互平行的,过度绘制最大为2x
  • 所有文本视图都是自定义的,为它们设置自定义字体
  • UI 正在 Activity 的
    onCreate()
    中加载

我正在考虑做以下任一事情:

  • 以更少的活动数量和更多的片段数量将应用程序转换为片段。例如,有一个 Home Activity 加载第一个片段,并且与应用程序的进一步交互通过片段事务不断加载/切换片段以用于不同的目的。仅当我达到片段限制时,我才会生成新活动。
    对提高速度有帮助吗?

  • 以某种方式分解 UI,一旦 Activity 启动,最基本的 UI 就会加载到视图中,所有其他 UI 元素都

    inflated
    位于后台线程(AsyncTask)中,然后
    added
    到根当前视图。

不同意见,哪种方法会更好?
有没有更好或标准的方法来解决这个问题?

感谢所有的投入。预先感谢!

performance android-layout android-fragments android
2个回答
2
投票

对于您已经要做的事情,这里有一些更多建议。

  1. 如果您在

    onCreate()
    方法中注入视图,请确保使用设计时注入框架(Bufferknife 或 AndroidAnnotations),而不是运行时注入框架(Guice、RoboGuice)。运行时框架肯定会减慢启动时间。

  2. 如果您有最初对用户不可见的视图,您可以使用 ViewStub 并按需加载它们。


0
投票

现代方式:AsyncLayoutInflater

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