为了账号安全,请及时绑定邮箱和手机立即绑定

Android-Service系列之断点续传下载

XRay_Chen 移动开发工程师
难度中级
时长 1小时46分
学习人数
综合评分9.53
58人评价 查看评价
9.7 内容实用
9.6 简洁易懂
9.3 逻辑清晰
关于进度条进行到50多或者70多的时候就变为负数,那是因为这里老师定义的长度均用int型,而下载的文件可能过大,超过了int进行相除的位数,导致结果显示为负数。
解决方法为:在计算下载百分比的时候先把已下载的长度和文件的总长度转化为long型进行相除计算,再转化为int型广播出去,进而设置进度条。

最新回答 / willwaywang4006243
不知道,你是遇到了什么问题.老师说的206那个地方,我是换成了200才可以的

最赞回答 / 慕虎8944750
如果是bindservice启动,当前activity销毁,service就销毁了,下载会失败!startservice是启动的service不会随activity的销毁而销毁
有一个bug,中间是以每隔几百毫秒更新界面,如果在这世间点内,下载完文件,界面就不会刷新。
进度到79之后显示的是-79
有些bug,比如:1.最后到达百分之一百的时候也要发送广播,解决方案:在MainActivity中直接设置进度为100,或者在while(){}后面添加广播语句intent.putExtra("finished",mFinised*100/mThreadInfo.getEnd());mContext.sendBroadcast(intent);2.狂点下载会出现多次下载。而且根本无法暂停。解决方法:在DownloadService中添加/*是否正在下载*/private boolean isDownloading = false;接下来相信聪明的你应该知道怎么做(onStartCommand)
if (intent.getAction().equals(DownloadService.ACTION_UPDATE)) {
int finished = intent.getExtras().getInt("finished");
if (mPbProgress.getProgress() != finished) {
Log.d(TAG, "finished:" + finished);
mPbProgress.setProgress(finished);
}
}

最新回答 / 慕移动9181930
我也是碰到这个问题了的,下面是我的解决办法,shexyptebhbvusougjmcrxjumkbffqdlsdgftdcylfiouqxzdmabzvercuxxzvovtmmvwohoxqmgtxnafykkwdpovonztolxvmgrfrqsbdzjtvqvlfic
咳咳,只有我注意到Qovd3.5么- -未和谐版的快播啊
很多人手机上是没有sdk卡的。老师这个答案是拿到sd卡的路径。
部分手机是不对的。
比如魅族Environment.getExternalStorageDirectory()即可,就是拿到已有的内存。再拿后面的就会报错。
因为后面那个方法getabsolutepath();一般情况下是拿手机外置路径的。大家多查阅自己的机型,选择适合自己的方法、

最新回答 / onceeeeday
DownloadTask.javapackage services;import java.io.File;import java.io.IOException;import java.io.InputStream;import java.io.RandomAccessFile;import java.net.HttpURLConnection;import java.net.URL;import java.util.ArrayList;import java.util.List;import java....
点击几次下载时,会创建多个线程下载。我弄了个简单的办法,当点击开始下载后,将按钮的点击属性设为false,点击暂停后,再设为true
老师讲得不错!
课程须知
需要完成Android攻城师入门的学习
老师告诉你能学到什么?
1:如何实现断点续传 2:使用广播接收消息 3:多线程技术更新UI 4:Service的实际应用

微信扫码,参与3人拼团

意见反馈 帮助中心 APP下载
官方微信
友情提示:

您好,此课程属于迁移课程,您已购买该课程,无需重复购买,感谢您对慕课网的支持!

本次提问将花费2个积分

你的积分不足,无法发表

为什么扣积分?

本次提问将花费2个积分

继续发表请点击 "确定"

为什么扣积分?

举报

0/150
提交
取消