可以使用缓存使QML应用程序“离线支持”
Possible to make QML application "offline capable" using caches?
我正在尝试使我的一个QML应用程序"离线" - 这意味着我希望用户能够在未连接到互联网时使用该应用程序。
我看到的主要问题是,我几乎是从我的一个HTTP服务器中提取一个带有UI的QML文件,这使我能够将大部分代码保持在可访问范围内并易于更新。
我的"主QML文件"显然具有外部依赖关系,例如字体(使用FontLoader
(,图像(使用Image
(和其他QML组件(使用Loader
(。
AFAIK所有这些资源都是通过Qt网络堆栈加载的,所以我想知道我必须做些什么才能使所有资源在离线时可用,而无需手动将它们全部下载到设备上。
是否可以通过在Qt/C++级别调整现有/实现自己的缓存来做到这一点,还是我完全走错了轨道?
谢谢!
一个简单的解决方案是反转该方法:在应用程序的可执行文件/捆绑包中包含基线文件。首次启动时,将它们复制到应用程序的数据目录。然后,只要您有权访问服务器,就可以更新数据目录。
数据目录的所有修改都应该是原子的 - 它们必须完全成功或完全失败,而不会使数据目录处于不可用状态。
通常,您会创建一个新的临时数据文件夹,并复制/硬链接其中的文件,并下载所需的文件,并且只有在所有内容都签出后,您才会将旧数据目录与新数据目录交换。
让你的应用程序直接在线访问QML和类似资源几乎是不可能的,除非你坚持显式地对所有资源进行版本控制并在URL中包含版本号。
假设您的应用程序已启动,并且已加载一些资源。不能保证用户已转到所有QML屏幕 - 因此只会加载一些资源。QML也不保证资源重新加载的频率和时间:毕竟,它维护自己的缓存。有时,您会更新服务器上的内容。完成更改后,用户继续探索应用程序的更多内容,但现在他体验的应用程序是新旧部分的弗兰肯斯坦,无法保证这些部分仍然可以协同工作。这是个坏主意。
- QWebEngine 5.7.1 离线导航加载缓存
- ActiveMq:持久队列和离线系统
- 如何离线安装熊猫和依赖项
- QT离线安装程序和兼容的C 编译器安装
- 'tedt'的离线定义
- 离线 Qt 文档
- 如何在QML(Qt)中离线运行OpenStreetMap
- CMAKE:外部项目更新和离线工作
- 如何在没有相机的情况下使用 Kinect 捕获的 RGB-D(请离线流示例代码)
- 缓存Google Maps供离线使用
- 离线嵌入式实时路由
- 可以使用缓存使QML应用程序“离线支持”
- "= default"是否允许离线实施?
- c++ -为离线VS2013加载微软符号
- Postgresql服务器和客户端离线模式
- 离线虚拟方法
- 如何创建离线数据库与c++一起使用
- 如何得到一个距离矩阵的计算正在离线上我的服务器
- 基于订阅的软件许可-离线验证
- 离线时的NetGroupEnum()