我有一个自定义ListCell
实现,如下图所示。
左侧,代表日期,由3个标签组成,放入aVBox
和由计数器组成的“CounterContent”,TextField
每个数字都有a,包含在aHBox
中,两个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+ 上进行了尝试。在三星手机上,性能总体上要好得多,正如预期的那样,因为我猜是提前编译,但仍然存在垃圾收集问题。此外,在列表视图中填充了单元格后,滚动不是很流畅。
listcell 是否复杂或性能不佳可能是什么问题?
更新:
运行大量测试后,滚动不流畅似乎不是由性能问题引起的。至少在 S5(javafxports 8.60.7)上。
我删除了所有 css 样式,并用单个标签替换了文本字段(计数器节点已经是一个自定义控件(忘记了),它在 2 Regions
(不是)中布置了文本字段,并且在构造函数中实例化HBoxes
了节点) ListCell
. 此外,我切换了ListView
aCharmListView
并设置了 android.monocle.input.touchRadius=1。
这些步骤都没有带来显着的改善。
澄清一下:对比华为手机,S5和android 5+上的滚动都可以使用,但不是很流畅,用户体验不太理想。
在华为(javafxports 8.60.6)上,更改标签的计数器文本字段带来了显着的改进,但还没有达到滚动可用的程度。直到我设置了这个神奇的实验开关:gluon.experimental.performance=true,这使得列表视图快速滚动(经过一点预热延迟),但仍然不是很流畅。