u***@163.com
u***@163.com
  • 发布:2023-01-31 17:44
  • 更新:2023-02-11 13:26
  • 阅读:877

【报Bug】uni.downloadFile 导致下载任务堆积

分类:uni-app

产品分类: uniapp/App

PC开发环境操作系统: Windows

PC开发环境操作系统版本号: win10

HBuilderX类型: 正式

HBuilderX版本号: 3.6.18

手机系统: Android

手机系统版本号: Android 12

手机厂商: 小米

手机机型: redmi K30 Pro

页面类型: vue

vue版本: vue2

打包方式: 云端

项目创建方式: HBuilderX

操作步骤:

看附件代码

预期结果:

重启 app 后,plus.downloader.enumerate 应当取不到任务列表

实际结果:

有任务列表

bug描述:

调用 uni.downloadFile 进行文件下载之后,执行了 downloadTask.abort(),但是重启 app 后,通过 plus.downloader.enumerate 发现,下载任务仍然存在。最终导致任务越来越多。
这根源应该是 plus.downloader.clear(-1) 清理不掉任务所导致的。

2023-01-31 17:44 负责人:YUANRJ 分享
已邀请:

最佳回复

DCloud

DCloud

HBuilderX 3.7.1.20230210-alpha 已修复。

u***@163.com

u***@163.com (作者)

或者你告诉我任务列表是从哪里取的我自己处理行不行?猜想是存在 storage 中但是我获取了一下 storage 也没找到对应的 key

YUANRJ

YUANRJ

plus.downloader.enumerate 是持久化存储的,重启app并不会清除,可以使用plus.downloader.clear 进行手动删除。

YUANRJ

YUANRJ

执行abort(),如果任务未完成,则终止下载,并从任务列表中删除。 如下载未完成,将删除已下载的临时文件,如果下载已完成,将不删除已下载的文件。
你在下载完成之后执行abort()没有什么意义。

  • u***@163.com (作者)

    再帮忙看看吧,现在都怩30多个任务了

    2023-02-02 11:29

u***@163.com

u***@163.com (作者)

问题是我执行 plus.downloader.clear() 或者是 plus.downloader.clear(-1)都没有作用,app不重启之前确实是删除了,但是app 一重启又枚举出来了。

看图,已经描述的很清楚了~!

u***@163.com

u***@163.com (作者)

这些任务也不全是下载完成的

u***@163.com

u***@163.com (作者)

手机上的文件确实是清除了没问题,但是持久化的任务清除不了的。下面这个这个权限代码有什么用途?写在哪里?

u***@163.com

u***@163.com (作者)

找到原因了,如果是直接用 android 方式退出 app ,任务就清理不掉,只有正常走退出流程才管用,这要怎么监听异常退出?

u***@163.com

u***@163.com (作者)

就是 APP hide 之后应用关闭了,怎么让它走正常关闭流程

u***@163.com

u***@163.com (作者)

更具体一点就是只有调用了 plus.runtime.quit() ,任务才会被清理

u***@163.com

u***@163.com (作者)

放弃了,懒得用了,plus.runtime.quit() 之后,再走 android 的关闭流程又不行了

要回复问题请先登录注册