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

我的进度条每次都没有到达100%文件就已经下载完了

我的进度条每次都没有到达100%文件就已经下载完了,可是我设置的是500毫秒啊

正在回答

4 回答

这个一般都是最后一次文件写入完时间没有一个周期,最简单的办法,就是直接在接收到下载完成的广播后,强制设置进度为100即可

0 回复 有任何疑惑可以回复我~
我是这样写的  只贴主要代码
while ((len = input.read(buffer)) != -1){
//写入文件
        raf.write(buffer,0,len);

        //累加整个文件的下载进度
        finished += len;
        //累加每个线程的下载进度
        mThreadInfo.setFinished(mThreadInfo.getFinished() + len);
        //发送广播给activity
        intent.putExtra("finished",(int)(finished*1.0/fileinfo.getLength()*100));
        intent.putExtra("id",fileinfo.getId());
        mContext.sendBroadcast(intent);

        //在下载暂停是把下载进度保存在数据库
        if(isPause){
            Log.e("11111","线程保存=="+mThreadInfo.getFinished());
            mDAO.updateThread(mThreadInfo.getUrl(),mThreadInfo.getId(),mThreadInfo.getFinished());
            return;
        }
    }
    我并没有做500毫秒的限制 我会一直发   但是我再接受的时候做了判断 请看
    
    if(DownLoadService.ACTION_UPDATE.equals(intent.getAction())){
    int finished = intent.getIntExtra("finished",0);
         if(progress != finished){
             progress = finished;
             mProgressH.setProgress(finished);
             mProgressR.setProgress(finished);
         }
}
定义个变量来比对穿过来的数值  不一样就更新进度条  并且把最新的进度赋值给我们定义的变量  等传过来的大于我们的变量就接着更新进度条  如此循环 完美解决


0 回复 有任何疑惑可以回复我~

最后一次广播没有发回界面,可以在while里判断一下当下载内容的进度达到文件的length时提交一次100使进度条填充满


0 回复 有任何疑惑可以回复我~

因为当你下载完成的时候 离与上次发送广播没有500毫秒 所以就没有发送广播更新 可以在while循环结束时再发送一次广播

0 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消
Android-Service系列之多线程断点续传下载
  • 参与学习       21809    人
  • 解答问题       62    个

本视频教程主要代领我们要学习的多线程续传下载程序的开发

进入课程

我的进度条每次都没有到达100%文件就已经下载完了

我要回答 关注问题
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号