学徒浅析Android——Android原生下载机制针对0K大小文件下载异常的分析

本篇文章已授权微信公众号 guolin_blog(郭霖)独家发布

 

最近在进行一次测试用例中,发现测试手机在利用本地下载功能下载0K大小的文件时,进度条一直处于进度模糊状态中,虽然查看本地存储路径,发现文件已经存在,但是页面上并没有提示下载成功,此时只能对下载执行暂停或删除操作。最初只是怀疑是自身应用的问题,但是在试了自己的华为畅享5s(Android5.1)、联想S560(Android.4.2)(暴露贫穷了)及朋友的ZTE小鲜(Android6.0)华为P9(Android7.0)等三款不同厂商的设备后,发现都有相同的现象,所以怀疑这是android自身的一个待优化点(说bug有点严重了,毕竟0K大小的文件谁会经常遇到呢)。在此基础上,对AOSPDownloadProvider进行了一番研究,源码资源大家可以访问http://androidxref.com/,最新的Android Oreo源码也可以在上面查阅。

 

下面的调查以Android7.0Android8.0DownloadProvider源码为基础展开。将探讨两个问题:

(1)进度条样式为什么是进度模糊样式?

(2)0K文件是否真正意义上下载成功了?

 

Android本地下载分为三部分:
1frameworks/base/core/java/android/app/下的DownloadManager.javaframeworks/base/core/java/android/provider/下的Downloads.java

2、packages/apps/providers/下的DownloadProvider

3frameworks/base/packages/下的DocumentsUI

其中,DocumentsUI就是我们常见的下载列表。而DownloadManager.java就是开放给开发者调用的下载器,也是系统自身使用的下载器,Downloads.java负责表路径和下载状态标记的管理,DownloadProvider负责下载过程中数据的处理和展示。鉴于ANDROID下载机制中,默认下载进度是以通知的形式展示的,所以我通过检索Notification,发现只在DownloadProvider中出现了调用,那么问题的根源可能就存在在DownloadProvider中。

 

DownloadProvider类目录结构如下:

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值