说明:收录25万 73个行业的国家标准 支持批量下载
(19)国家知识产权局 (12)发明 专利申请 (10)申请公布号 (43)申请公布日 (21)申请 号 202210710961.6 (22)申请日 2022.06.22 (71)申请人 广东艾矽易信息科技有限公司 地址 519000 广东省珠海市横琴新区环岛 东路3000号513办公- 515办公 (72)发明人 王晓南  (74)专利代理 机构 深圳市港湾知识产权代理有 限公司 4 4258 专利代理师 陈丽 (51)Int.Cl. G06F 9/38(2006.01) G06F 9/50(2006.01) (54)发明名称 基于Flutter的文件下载方法、 装置及终端 设备 (57)摘要 本申请适用于数据处理技术领域, 提供了基 于Flutter的文件下载方法、 装置及终端设备。 上 述基于Flutter的文件下载方法, 在需要执行文 件下载任务时, 从线程池中为文件 下载任务分配 下载线程, 通过下载线程执行文件 下载任务而不 占用Flutter的主线 程。 而且, 主线 程创建接收器 和发送器, 并在创建文件下载任务后, 将发送器 作为argument参数传到 下载线程, 下载线 程通过 该发送器向主线程发送消息, 主线程通过接收器 接收该消息, 从而实现主线程和下载线程之间的 通讯。 相较于现有技术, 本申请实施例执行文件 下载任务不占用Flutter的主线程, 能够大大缓 解现有技术中的卡顿现象, 提升文件 下载效率和 项目运行效率, 而且能够支持多个文件下载任 务。 权利要求书1页 说明书9页 附图1页 CN 115113938 A 2022.09.27 CN 115113938 A 1.一种基于Flut ter的文件下 载方法, 其特 征在于, 包括: 创建线程池, 所述线程池 包含多个线程; 创建一个或多个文件下载任务, 从所述线程池中为所述一个或多个文件下载任务分配 下载线程; 通过主线程创建发送器和接收器, 并在创建文件下载任务后, 将所述发送器作为 argument参数传到各个下载线程, 各个下载线程通过所述发送器向所述主线程发送消息, 所述主线程通过所述接收器接收所述消息 。 2.根据权利要求1所述的基于Flutter的文件下载方法, 其特征在于, 所述各个下载线 程通过所述 发送器向所述主线程 发送消息, 包括: 下载线程收到信息发送请求时, 通过主线 程传进来的发送器, 向主线程发送下载进度和状态 回调消息; 所述主线程通过所述接 收器 接收所述下 载进度和状态回调消息 。 3.根据权利要求1所述的基于Flutter的文件下载方法, 其特征在于, 所述主线程检测 到用户操作时, 向所述下 载线程发送所述用户操作的信息 。 4.根据权利要求1所述的基于Flut ter的文件下 载方法, 其特 征在于, 所述方法还 包括: 在文件下载任务发生中断后再次进行下载时, 将 目标链接、 存储位置、 下载进度、 下载 结果以及已下 载文件的大小传入di o的参数中, 继续进行中断的文件下 载任务。 5.根据权利要求4所述的基于Flutter的文件下载方法, 其特征在于, 对于所述存储位 置, 通过以下 过程进行持久化保存: 创建Hive类型的model对象, 并对所述model对象添加常用属性, 所述常用属性包含文 件名、 下载地址、 本地路径、 下 载进度、 下 载状态和封面图中的一种或多种; 创建所述文件下 载任务时, 对该文件下 载任务进行本地数据持久化处 理以进行保存; 在需要查询 所述文件下载任务下载的文件信息时, 通过info.link作为关键字key, 进 行查询。 6.根据权利要求1所述的基于Flutter的文件下载方法, 其特征在于, 所述线程池中的 各个线程与主 线程之间相互独立。 7.根据权利 要求1所述的基于Flutter的文件下载方法, 其特征在于, 所述创建线程池, 包括: 通过线程池工具L oadBalancer创建所述线程池。 8.一种基于Flut ter的文件下 载装置, 其特 征在于, 包括: 创建模块, 用于创建线程池, 所述线程池 包含多个线程; 分配模块, 用于创建一个或多个文件下载任务, 从所述线程池中为所述一个或多个文 件下载任务分配下 载线程; 处理模块, 用于通过主线程创建发送器和接收器, 并在创建文件下载任务后, 将所述发 送器作为argument 参数传到各个下载线程, 各个下载线程通过所述发送器向所述主线程发 送消息, 所述主 线程通过所述接收器接收所述消息 。 9.一种终端设备, 包括存储器和 处理器, 所述存储器中存储有可在所述处理器上运行 的计算机程序, 其特征在于, 所述处理器执行所述计算机程序时实现如权利要求1至7任一 项所述的方法。 10.一种计算机可读存储介质, 所述计算机可读存储介质存储有计算机程序, 其特征在 于, 所述计算机程序被处 理器执行时实现如权利要求1至7任一项所述的方法。权 利 要 求 书 1/1 页 2 CN 115113938 A 2基于Flut ter的文件下 载方法、 装置及终端设 备 技术领域 [0001]本申请属于数据处理技术领域, 具体涉及一种基于Flutt er的文件下载方法、 装置 及终端设备。 背景技术 [0002]Flutter是谷歌开发的移动UI(User  Interface, 用户界面)框架, 可以快速在iOS 和Android上构建高质量的原生用户界面。 而且, Flutter可以与现有的代码一起工作, 因此 Flutter正在被越来越多的开发者使用。 [0003]虽然Flutter存在以上诸多的有点, 但 是Flutter仅仅是通过Dio实现, 只支持断点 下载功能, 无法实现多文件同时下载。 其中, Dio为Flutter的网络请求工具, 包含GET、 POST 请求、 下载、 缓存等多种功能, 为Flutter较为常用的第三方插件。 并且, 经本 申请发明人研 究发现: Flutter的多任务主要是在主线程里进行, 如执行下载任务时进行其他操作, 则项 目会有十分卡顿的现象发生, 无法满足下 载功能的需求。 发明内容 [0004]为克服相关技术中存在的问题, 本申请实施例 提供了基于Flutter的文件下载方 法、 装置及终端设备。 [0005]本申请是通过如下技 术方案实现的: [0006]第一方面, 本申请实施例提供了一种基于Flutter的文件下载方法, 包括: 创建线 程池, 所述线程池包含多个线程; 获取一个或多个文件下载任务, 从所述线程池中为所述一 个或多个文件下载任务分配下载线程; 通过主线程创建接收器, 并在创建文件下载任务后, 将发送器作为argument参数传到各个下载线程, 各个下载线程通过所述发送器向所述主线 程发送消息, 所述主 线程通过所述接收器接收所述消息 。 [0007]本申请实施例中, 在需要执行文件下载任务时, 从线程池中为文件下载任务分配 下载线程, 通过下载线程执行文件下载任务而不占用Flutter的主线程。 而且, 主线程创建 接收器和发送器, 并在创建文件 下载任务后, 将发送器作为argument参数传到下载线程, 下 载线程通过该发送器向主线程发送消息, 主线程通过接 收器接收该消息, 从而实现主线程 和下载线程之间的通讯。 相较于 现有技术, 本申请实施例执行文件 下载任务不占用Flutter 的主线程, 能够大大缓解现有技术中的卡顿现象, 提升文件下载效率和项目运行效率, 而且 能够支持多个文件下 载任务。 [0008]结合第一方面, 在一种可能的实现方式中, 所述各个下载线程通过所述发送器向 所述主线程发送消息, 包括: 下载线程收到信息发送请求时, 通过主线程传进来的发送器, 向主线程 发送下载进度和状态回调消息; 所述主线程通过所述接收器接收所述下载进度和 状态回调消息 。 [0009]结合第一方面, 在一种可能的实现方式中, 所述主线程检测到用户操作时, 向所述 下载线程发送所述用户操作的信息 。说 明 书 1/9 页 3 CN 115113938 A 3

.PDF文档 专利 基于Flutter的文件下载方法、装置及终端设备

文档预览
中文文档 12 页 50 下载 1000 浏览 0 评论 309 收藏 3.0分
温馨提示:本文档共12页,可预览 3 页,如浏览全部内容或当前文档出现乱码,可开通会员下载原始文档
专利 基于Flutter的文件下载方法、装置及终端设备 第 1 页 专利 基于Flutter的文件下载方法、装置及终端设备 第 2 页 专利 基于Flutter的文件下载方法、装置及终端设备 第 3 页
下载文档到电脑,方便使用
本文档由 人生无常 于 2024-03-18 13:30:58上传分享
友情链接
交流群
  • //public.wenku.github5.com/wodemyapi/22.png
-->
站内资源均来自网友分享或网络收集整理,若无意中侵犯到您的权利,敬请联系我们微信(点击查看客服),我们将及时删除相关资源。