我正在开发一个应用程序,让用户可以将图像分配给人,然后按人名查看图像。我目前正在做的是,当一个人被点击时,该人的所有图像将被加载到他们的个人ImageView
中。这在加载三个或四个图像时工作正常,但是当涉及20多个图像时,事情开始变得有点滞后。
所以,我的问题是:如何在不完全延迟应用程序的情况下有效地从文件加载这些图像?
我想过的事情:
答案 0 :(得分:4)
如果您希望应用程序保持可伸缩性(轮流使用数百个图像),则在应用程序启动之前加载它们是不可行的。
您看到应用程序延迟的原因很可能是有限的硬盘驱动器带宽(可能需要进行分析)。您可以采取一些措施来改善图像加载(例如,使用优化的图像格式/存储图像的缩小版本等),但在某些时候,您将始终从磁盘加载内容。
1)我建议您创建一个由ImageView
和ProgressIndicator
组成的自定义节点。让用户知道正在加载其他图像。
2)让有限数量的工作线程加载图像以避免在等待磁盘时出现过多阻塞
3)尽可能预加载和缓存图像。这是使用SoftReferences
实际上是一个好主意的少数情况之一。