下载进度条的计算

本文介绍如何利用OkHttp库实现文件的下载功能,并详细解释了通过同步方式执行请求、获取响应并逐步读取文件的过程,同时实现了下载进度的监控。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

//1.创建一个okhttp客户端对象
OkHttpClient okHttpClient = new OkHttpClient();
//2.创建一个请求的对象....默认就是get方式
Request request = new Request.Builder()
        .url("http://mirror.aarnet.edu.au/pub/TED-talks/911Mothers_2010W-480p.mp4")
        .build();
//3.客户端要去调用一个请求的对象
Call call = okHttpClient.newCall(request);
ByteArrayOutputStream bao=new ByteArrayOutputStream();

//4.执行....指定同步还是异步请求的方式....call.execute()同步的方式
try {
    Response response = call.execute();
    long lenthg = response.body().contentLength();
    progressBar.setMax((int) lenthg);
    if (response.isSuccessful()){
        InputStream inputStream = response.body().byteStream();
        BufferedInputStream bu=new BufferedInputStream(inputStream);
        byte[] bytes = new byte[1024];
        int bytesRead=0;
        //将文件大小分成100分,每一分的大小为unit
       int hh= (int) (lenthg/100);
        int count=0;
        while (-1!=(bytesRead=bu.read(bytes,0,bytes.length))) {
            bao.write(bytes, 0, bytesRead);
            count+=bytesRead;
            int unitProgress = 0;
            progressBar.setProgress(count);
           //计算当前百分比进度
            int temp = count / hh;
            if (temp >= 1 && temp > unitProgress) {//如果下载过程出现百分比变化
                unitProgress = temp;//保存当前百分比
                Log.d("TAG",unitProgress+"--");
            }
           
        }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值