首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >只有当使用SD卡时,DownloadManager才能3-5分钟停止下载。

只有当使用SD卡时,DownloadManager才能3-5分钟停止下载。
EN

Stack Overflow用户
提问于 2016-10-25 12:54:59
回答 1查看 283关注 0票数 0

我正在使用DownloadManager启动一个2Gb文件下载,在此过程中,我向用户提供了选择他们想要保存该文件的位置的选项:内部存储或SD卡。另外,我给用户一个选择取消上述下载。这是我的代码:

代码语言:javascript
运行
复制
DownloadManager.Query query = new DownloadManager.Query();
query.setFilterById(downloadId);
Cursor cursor = downloadManager.query(query);

try { 
    if (cursor.moveToFirst()) {
        int status =cursor.getInt(cursor.getColumnIndex(DownloadManager.COLUMN_STATUS));
        if (status == DownloadManager.STATUS_RUNNING || 
                status == DownloadManager.STATUS_PENDING) {
            downloadManager.remove(downloadId);
        } 
    } 
} finally { 
    cursor.close();
} 

我的问题:当下载到内部存储时,.remove(downloadId)调用立即工作,并且下载停止。但是当下载到SD卡(在三星的S7边缘上),使用相同的代码,它需要3-5分钟才能停止下载。

有什么办法消除这种拖延吗?

编辑:由Activity.getExternalFilesDirs()返回的一些路径示例:

/存储/模拟/./-这是内部的 //存储/0123-4567/./-这是SD卡

EN

回答 1

Stack Overflow用户

发布于 2016-10-25 16:08:44

我自己找到了答案:看起来在下载开始之前,DownloadManager会创建一个2Gb文件(我正在下载的文件的大小),其中填充了零,这样它就可以保留分配的存储空间。这种文件写入操作使得SD卡的速度变慢了。

S7边缘上的内部存储速度非常快,这就是为什么不存在这个问题。实际的问题(我认为是OS错误)是调用.remove()来等待初始的写操作,而不是取消它。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40240550

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档