我有一个自定义ListCell
实现,如下图所示。
左侧,代表日期,由 3 个标签组成,放入 aVBox
和由计数器组成的“CounterContent” TextField
,每个数字为 a HBox
,包含在 a 中,两个Hboxes
包含用于 kWh、kWh/day 等的标签. 这似乎太多了,无法高效运行。
我试图在后台任务中加载数据,显示进度指示器,而任务正在运行,但与桌面不同,在 android 上的性能非常差。每当我切换到列表视图时,垃圾收集就会启动并阻塞 ui 线程,因此进度指示器永远不会出现。
我已经在华为 Y-300、Android 4.1.1、javafxports 8.60.6(因为 javafxports 8.60.7 导致错误,导致TextField
无法使用)和三星 S5 mini、Android 5+上尝试过。在三星手机上,性能总体上要好得多,就像预期的那样,因为我猜是提前编译,但仍然存在垃圾收集问题。此外,在列表视图中填充了单元格后,滚动不是很流畅。
列表单元是复杂的还是性能不佳的其他原因?
更新:
运行大量测试后,似乎滚动不流畅不是由性能问题引起的。至少在 S5 上(javafxports 8.60.7)。
我删除了所有 css 样式,并用单个标签替换了文本字段(计数器节点已经是一个自定义控件(忘记了),它在 2 Regions
(不是HBoxes
)中布置了文本字段,并且ListCell
在构造函数中实例化了 的节点) . 此外,我切换了ListView
aCharmListView
并设置了 android.monocle.input.touchRadius=1。
这些步骤都没有带来显着的改进。
澄清一下:与华为手机相比,S5和安卓5+的滚动是可以用的,但不是很流畅,导致用户体验不尽如人意。
在华为 (javafxports 8.60.6) 上,更改标签的计数器文本字段有显着改进,但还没有达到滚动可用的程度。直到我设置了这个神奇的实验开关:gluon.experimental.performance=true,这使得列表视图的滚动速度快如闪电(经过一点预热延迟),但仍然不是很流畅。