我有一个自定义的ListCell
实现,如下图所示。Gluon上的ListView性能不佳
左侧,这表示日期,由3个标签,放入VBox
和“CounterContent”由...组成的计数器,具有TextField
各数位中,包含在HBox
,和两个Hboxes
包含千瓦时标准,千瓦时/日等。这似乎太过分了,无法正常运行。
我试图在后台任务中加载数据,显示进度指示器,而任务正在运行,但与台式机不同,在android上性能非常差。无论何时切换到列表视图,垃圾收集都会启动,并阻止ui线程,以便进度指示器永不显示。
我试过了华为Y-300,Android 4.1.1,javafxports 8.60.6(因为javafxports 8.60.7导致bug,使得TextField
无法使用),而在三星S5 mini,Android 5 +。在三星手机上,由于我猜想的是前期编译,所以性能总体来说会更好,就像预期的那样,但仍然存在垃圾收集问题。此外,在listview填充单元格后,滚动不是很平滑。
列表单元是否复杂,或者其他可能导致性能差的问题?
UPDATE:
跑了很多的测试中,它似乎不平滑滚动不是由性能问题导致的后。至少在S5(javafxports 8.60.7)上。
我删除了所有的CSS样式,并且由单个标签替换文本框(计数器节点已经是一个定制的控制(忘了这一点),它勾画出文本框在2 Regions
(未HBoxes
)和所述节点ListCell
在构造函数中实例化)。此外,我将ListView
转换为CharmListView
并设置了android.monocle.input.touchRadius = 1。
这些步骤都没有导致相当大的改进。
只是为了澄清:与华为手机相比,S5和Android 5+上的滚动功能可用,但不是很流畅,这使用户体验不尽如人意。
在华为(javafxports 8.60.6)上,更改标签的计数器文本框显着改进,但不能滚动到可用的位置。直到我设置了这个神奇的实验开关:gluon.experimental.performance = true,这使得列表视图快速滚动(在稍微加热延迟之后),但仍然不是很流畅。
感谢您的详细信息!我已更新我的问题,并采取了所采取的措施,以进一步调查问题 – jns
很高兴您获得了一些改进。您是否尝试过2015年Gluon的[JavaOne](https://play.google.com/store/apps/details?id=com.gluonhq.applications.javaone)应用程序?它使用一个性能相当好的'CharmListView'控件,但没有实验标志。检查设备中的滚动是否顺畅。 –
刚刚尝试过,在滚动时看到相同的小“跳跃”,所以我的列表单元格实现不会引起这种效果,正如我在开始时所预期的那样。在Web视图中滚动例如超级平滑。 – jns