添加效果、CSS、过渡、自定义控件和其他通常在桌面上运行良好的复杂内容时,在移植到移动设备时可能会出现很大的性能损失。
Effects
虽然效果使节点或窗格看起来很漂亮,但它们对移动设备的性能产生最大的负面影响。
尽量避免将它们应用于变化很大的节点,例如 ListView、TableView 或 ComboBox 控件上的单元格。
此外,如果将它们应用于具有引用的子级(ListView,...)的父级,则如果子级无效(滚动后或类似),则父级(和效果)将始终呈现。
如果您确实需要对父级产生效果,请尝试将父级和子级分开。
代替:
parent (Pane with effect)
|-- ListView
你可以这样做:
parent (StackPane without effect)
|-- Pane (with effect)
|-- ListView
由于窗格不会发生太大变化,因此您可以对其使用缓存。通常,缓存策略的工作原理是渲染节点的图像(具有效果的窗格),而不是重新创建节点和该效果,因此这是一个快速的胜利:
parent (StackPane without effect)
|-- Pane (with effect) and with Cache
|-- ListView
相反,不要在变化很大的节点(如 ListView)上使用缓存。
CSS
复杂的 CSS 需要较长的 CPU 时间。尝试简化它。您甚至可以删除整个 CSS 以进行快速测试。然后决定您可以使用或不可以使用什么。
也尝试用代码替换一些样式。
动画
动画也是如此:如果可能的话,避免动画、过渡。
节点数量和自定义控件
节点数量越多,性能越低,因此尽量将其保持在最低限度(尽可能用图像、画布替换复杂内容)。
切换场景
移动设备屏幕较小,每个场景上的内容最好比桌面设备少。避免切换舞台或场景也很重要。相反,使用不同的节点并在同一场景中替换它们。
胶子符咒用途View
nodes http://docs.gluonhq.com/charm/latest/#_the_views,以及在不同视图之间切换的简单方法:MobileApplication.getInstance().switchView("other view name")
.
Images
最后,当使用从互联网下载或从文件加载的图像时,缓存策略是必须的。看看 Gluon 提供的那些魅力下降 https://bitbucket.org/gluon-oss/charm-down/src/e39ddddeb213381571b07474779d530617c44994/common/src/main/java/com/gluonhq/charm/down/common/cache/?at=default.