【发布时间】:2017-08-08 20:45:49
【问题描述】:
我有一个 MultiView,其中包含多个项目和 TImages 作为图标而不是 ImageList(我之前使用过 ImageList,但它非常损坏,消耗的 CPU 也不少)。
发生的事情是:当用户在应用打开后第一次点击 MasterButton 或滑动 MultiView 时,应用会冻结大约 1/3 秒,然后滑动动画以大约 2 或 3 fps 的速度显示,在第一张幻灯片之后,MultiView 恢复正常的 fps 动画。
我尝试从 OnStartShowing 中删除所有代码,但它完全没有区别。什么可能导致此问题?有一些方法可以“预加载”第一次演出期间可能加载的内容?
【问题讨论】:
-
一点也不奇怪,我已经看到很多关于这个问题的投诉。不是您的确切场景,不一定只是多视图,但通常,许多 FMX 控件,第一次访问和/或动画时,它非常缓慢。我总是不鼓励这样做,但如果性能是一个问题,并且如果您仅打算针对 Android,那么您应该使用更原生的 Android 开发工具。例如:stackoverflow.com/questions/43232968/…
-
也许我们可以对 FMX 库进行编辑以改进它?使其成为线程或双缓冲...
-
@MaurícioLima 虽然 Delphi 确实带有完整的 VCL 代码,但恐怕提供的 FMX 代码是有限的。所以我怀疑你是否能够自己优化它,特别是因为没有提供用于渲染 FMX 核心的代码。
-
@SilverWarior 我明白了,也许如果我将 ListBox 切换到其他东西可以提高一些性能?
标签: android delphi firemonkey delphi-10.1-berlin multiview