嵌入式系统具有运行Qt Quick应用程序所需的硬件,具有良好的CPU和良好的GPU,但具有极慢的非易失性存储器.
由于GUI有很多图像,我有以下困境:
有没有一种很好的方法来使用Qt资源管理系统在后台加载资源?应该加载主GUI中使用的图像,同时启动画面显示一个很好的进度条,其余的可以在主应用程序启动后在后台静默加载.如果我可以有选择地加载并释放某些资源文件(在应用程序的某些状态下不需要一些资源文件,那么一个很好的补充就是如此,如果我可以释放一些内存那将会很好)
有没有一种优雅的方法来解决这个Qt资源系统,或者我是否必须手动管理我的所有图像?
因此,您不希望将资源嵌入到应用程序中,因为这会使可执行文件膨胀并且加载速度太慢,并且您不希望应用程序外部的资源,因为它们加载速度太慢?
首先,作为可执行文件中的资源并不意味着您是一个可以在内存中使用的对象。在大多数情况下,您仍然需要将该数据加载到 Qt 对象中,例如将图像文件加载到QImage. 您仍然会遇到延迟。除非这部分数据在内存中分页,否则它不会比直接从磁盘读取快。
您能做的最好也是唯一的事情就是掩盖延迟。只有当您知道每个应用程序状态需要哪些资源,并且每次更改状态时,您都会加载可以从当前状态进入的状态所需的所有数据时,这才有可能。这样,资源将提前加载,并且希望在您达到需要的新状态之前加载。缺点 - 您将必须继续跟踪这些对象,并且会产生内存开销 - 因为您可能正在加载多个状态的数据,但只输入一个状态。优点 - 大部分加载可以对用户隐藏,并且您只需预加载整个数据的子集,而不是所有数据。当然,尽可能减少资源足迹是必须的。
除此之外,你无能为力。如果您的存储速度很慢,最好的解决方案是尽可能升级它,其次是现实地了解您对硬件的期望。