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

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

XRay_Chen 移动开发工程师
难度中级
时长 1小时32分
学习人数
综合评分9.83
28人评价 查看评价
9.9 内容实用
9.9 简洁易懂
9.7 逻辑清晰
讲的很好,学习了,谢谢老师!
我写的该项目的地址:https://github.com/ginshin/Download
源码在哪下载啊
讲得不错,就是没看到源码
进度出现负数
下载的东西是损坏的,怎么解
文件路劲可以设置网络路径,学习了
视频的目的就是提供一个思路,肯定存在着问题,但是你要是完全跟视频的一样,学习的意义就不大了
提点优化吧,在分割每个线程下载长度时,最好使用Long型的,否则下载进度会出现问题的
我想问一下 各位大神 那个发送下载进度给activity mfinished是单个线程的完成度吧 应该是传过去所有线程的已经下载的进度吧 不解啊 这里
接上一条评论:

当第一个线程执行到行1,已进入if内,但还没有执行行2时,即sHelper依然为null,此时系统如果切换到第二个线程执行,第二个线程依然能进入if内,然后new一个并返回一个sHelper实例(假设内存地址为0x000012)。然后系统切换回线程1,继续在if内向下执行,此时它也会new一个实例(假设内存地址为0x000023)并返回。这样的话,各线程拿到的实例是不同的,在写数据库时依然会发生加锁情况。

给方法加同步,或用双重检测可解决,不了解的同学建议看看单例模式的七种写法(亦有说八种)及它们各自的优缺点。
提醒下后来的同学:

视频中的单例模式是不安全的,不能保证只产生单例。
if(sHelper==null){ // 行1
sHelper = new DatabaseHelper(context); //行2
}
return sHelper; // 行3
首页上一页1234567下一页尾页
课程须知
适合有一定Android开发基础的同学,要求学生能够有很强的java中多线程以及线程池的基础,灵活使用service和多线程结合实现断点续传功能。
老师告诉你能学到什么?
Activity和Service的通信方法 ListView和BaseAdapter的使用 数据库操作 多线程分段下载的原理 线程池的使用 线程同步的应用 单例模式的应用 Notification的使用 Messenger的使用

微信扫码,参与3人拼团

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

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

本次提问将花费2个积分

你的积分不足,无法发表

为什么扣积分?

本次提问将花费2个积分

继续发表请点击 "确定"

为什么扣积分?

举报

0/150
提交
取消