Android 课件下载业务梳理

396 阅读2分钟
-课件下载的业务流程是咋样的?

-课件下载现在有啥问题?

-如何解决?

课件下载的业务流程是咋样的?

0)入口主要有两个,一个是进入主页的时候,
如果该用户有课程则会根据deviceId 自动去下载最新的课件;
另一个是用户在点击课堂入口的时候,会触发下载课件的操作,弹出下载进度框。
1)用户拉取到课件可能有好几个,课件1,课件2....,这个时候,
还会做一个操作就是加速CDN;
把我们从服务端拉取到的一份加速CDN的地址列表,用来替换原来下发的课件下载域名地址。
2)Android 客户端用了一个开源的OkDownload 来处理课件下载,
而且是按照顺序下载的,课件1-课件2-课件3....,这里比较坑爹...;
然后在下载完成之后,又在主线程解压....
3)最后进入课堂,PPT是WebView 处理,根据url在下载的本地课件中获取对应的资源(图片/gif...);
如果本地没有则去对应的远端课件url地址拿。
Video 是ExoPlayer ,也是先从本地拿,然后播放;
如果本地没有则走共享流的方式播放视频....

课件下载现在有啥问题?

主要两个方面:一个app下载方面;一个课件资源方面。
1)没有断点续传,可能当时用户网络状态不好,
超时了或者用户自己中断了则用户下次来的时候,对当次课件可能需要重新下载。
2)OkDownload & QueueController代码混乱,而且这个库已经有一年多没有维护了,
上面的issue已经积累了很多了。
3)上报里面没有对课件id(resourceId)做预警,比如某个资源,
有许多用户下载不了,我们就可以反推是不是课件出现了问题,还是课件所在的节点出现了问题
4)上报内容需要再细化,网络相关的错误(超时,资源不可达,解析地址错误),
下载逻辑错误抛出的异常(读写文件权限错误,队列...)。

如何解决?

1)细化监控上报内容
2)重构OkDownload把它纳入NetWorkManager中,统一入口。