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

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

XRay_Chen 移动开发工程师
难度中级
时长 1小时32分
学习人数
综合评分9.83
28人评价 查看评价
9.9 内容实用
9.9 简洁易懂
9.7 逻辑清晰
非常感谢老师!给你36个赞!!!!
这个老师大赞
getReadableDataBase与getWritableDatabase效果是一样的,用不着修改
这个懒汉模式也不是绝对线程安全啊。。

最新回答 / 路人己
你应该在android studio 里设置你的SDK路径,经查电脑的SDK环境是否也修改了
取文件名直接fileInfo.getFileName() 就好了。。。
试试这个:
System.out.println("线程" + mThreadInfo.getId() + //
": 总完成度=" + mFinised * 100 / mFileInfo.getLength() + "%,"//
+ "本线程完成度="
+ mThreadInfo.getFinished() * 100 / (mThreadInfo.getEnd() - mThreadInfo.getStart()));

最新回答 / Gecollsn
Adapter初始化一个布局时已经把布局中的所有的控件创建完成了,除了ViewStub标签中的控件。通过最外层容器的findViewById方法查找获取view,其实就是把你传入的id跟容器中各view的id进行比较,如果相同就返回该view。view滑出界面并不会被销毁,它会储存到AbsListView的RecycleBin中的容器内,以便重复利用。
有个地方应该这样子才对,忘记那一节课了,,,
// 累加每个线程的下载进度
mThreadInfo.setFinished(mThreadInfo.getStart()+mThreadInfo.getFinished() + len);
好 学习学习

已采纳回答 / 折云7
可以用局部刷新的方法,item里面有ProgressBar这种刷新频率特别高的控件的时候还直接调用notifyDataSetChanged是不合适的.
关于线程的控制了解了 ,谢谢老师!!
进度条不正确,是因为计算百分比的时候,因为文件长度太长,而教程里面用的是int类型,超过了int类型的最大值,所以变成负数了.推荐下载都用long类型.

最新回答 / 落撒
我是这么理解的,虽然同一时间点是只有一个线程在工作,但是可能在某一个时间段有多个线程同时需要请求网络。你多线程下载就保证了要下载线程执行次数多。好比于线程优先级大了,得到分配的资源久多了
课程须知
适合有一定Android开发基础的同学,要求学生能够有很强的java中多线程以及线程池的基础,灵活使用service和多线程结合实现断点续传功能。
老师告诉你能学到什么?
Activity和Service的通信方法 ListView和BaseAdapter的使用 数据库操作 多线程分段下载的原理 线程池的使用 线程同步的应用 单例模式的应用 Notification的使用 Messenger的使用

微信扫码,参与3人拼团

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

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

本次提问将花费2个积分

你的积分不足,无法发表

为什么扣积分?

本次提问将花费2个积分

继续发表请点击 "确定"

为什么扣积分?

举报

0/150
提交
取消