android AsyncTask异步下载并更新进度条

简介: AsyncTask异步下载并更新进度条  //如果不是很明白请看上篇文章的异步下载AsyncTask 第一个参数:String 传入的是需要下载的地址第二个参数:Integer 是进度条的进度 第三个参数:String 下载后的结果,如果您下载的是一张图片,可以将它改成BitMap示例代码如下:package com.
AsyncTask异步下载并更新进度条
 
 //如果不是很明白请看上篇文章的异步下载
AsyncTask<String, Integer, String>  

第一个参数:String 传入的是需要下载的地址

第二个参数:Integer 是进度条的进度 

第三个参数:String 下载后的结果,如果您下载的是一张图片,可以将它改成BitMap




示例代码如下:


package com.example.testcctv;

import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;

import org.apache.http.HttpStatus;

import android.os.AsyncTask;
import android.util.Log;
import android.widget.ProgressBar;

/*****************************************************************************************************************************************
 * 异步线程下载类 参数说明: 第一个参数:String 传入的是需要下载的地址 第二个参数:Integer 是进度条的进度 第三个参数:String
 * 下载后的结果,如果您下载的是一张图片,可以将它改成BitMap
 *****************************************************************************************************************************************/
public class DownloadAsyncTask extends AsyncTask<String, Integer, String> {

	private final ProgressBar bar;
	private int count = 0;

	public DownloadAsyncTask(ProgressBar bar) {
		super();
		this.bar = bar;
	}

	@Override
	protected String doInBackground(String... params) {
		try {
			URL url = new URL(params[0]);
			HttpURLConnection connection = (HttpURLConnection) url
					.openConnection();
			connection.setConnectTimeout(10 * 1000);
			connection.connect();
			if (connection.getResponseCode() == HttpStatus.SC_OK) {
				bar.setMax(connection.getContentLength());
				File file = new File(params[1]);
				file.createNewFile();
				InputStream inputStream = connection.getInputStream();
				ByteArrayOutputStream arrayOutputStream = new ByteArrayOutputStream();
				byte[] buffer = new byte[10 * 1024];
				while (true) {
					int len = inputStream.read(buffer);
					publishProgress(len);
					if (len == -1) {
						break;
					}
					arrayOutputStream.write(buffer, 0, len);
				}
				arrayOutputStream.close();
				inputStream.close();

				byte[] data = arrayOutputStream.toByteArray();
				FileOutputStream fileOutputStream = new FileOutputStream(file);
				fileOutputStream.write(data);
				fileOutputStream.close();
			}

		} catch (MalformedURLException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		}
		return "下载完成";
	}

	@Override
	protected void onCancelled() {
		// TODO Auto-generated method stub
		super.onCancelled();
	}

	@Override
	protected void onPostExecute(String result) {
		Log.v("Fover", result);
		super.onPostExecute(result);
	}

	@Override
	protected void onPreExecute() {
		// TODO Auto-generated method stub
		super.onPreExecute();
	}

	@Override
	protected void onProgressUpdate(Integer... values) {
		count += values[0];
		bar.setProgress(count);
		super.onProgressUpdate(values);
	}

}

使用方法: 


//第一个值是下载地址,第二个值是保存地址
				String[] downLoadPath = {
						HTTPURL,
						Environment.getExternalStorageDirectory()
								+ "/dujinyang/dudu.apk" };
				DownloadAsyncTask asynTask = new DownloadAsyncTask(progressBar);
				asynTask.execute(downLoadPath);


相关文章
|
2月前
|
Ubuntu 开发工具 Android开发
Repo下载AOSP源码:基于ubuntu22.04 环境配置,android-12.0.0_r32
本文介绍了在基于Ubuntu 22.04的环境下配置Python 3.9、安装repo工具、下载和同步AOSP源码包以及处理repo同步错误的详细步骤。
171 0
Repo下载AOSP源码:基于ubuntu22.04 环境配置,android-12.0.0_r32
|
1月前
|
Android开发 开发者 Kotlin
告别AsyncTask:一招教你用Kotlin协程重构Android应用,流畅度飙升的秘密武器
【9月更文挑战第13天】随着Android应用复杂度的增加,有效管理异步任务成为关键。Kotlin协程提供了一种优雅的并发操作处理方式,使异步编程更简单直观。本文通过具体示例介绍如何使用Kotlin协程优化Android应用性能,包括网络数据加载和UI更新。首先需在`build.gradle`中添加coroutines依赖。接着,通过定义挂起函数执行网络请求,并在`ViewModel`中使用`viewModelScope`启动协程,结合`Dispatchers.Main`更新UI,避免内存泄漏。使用协程不仅简化代码,还提升了程序健壮性。
63 1
|
2月前
|
开发工具 uml git
AOSP源码下载方法,解决repo sync错误:android-13.0.0_r82
本文分享了下载AOSP源码的方法,包括如何使用repo工具和处理常见的repo sync错误,以及配置Python环境以确保顺利同步特定版本的AOSP代码。
279 0
AOSP源码下载方法,解决repo sync错误:android-13.0.0_r82
|
2月前
|
API 开发工具 Android开发
Android源码下载
Android源码下载
332 0
|
2月前
|
存储 监控 数据库
Android经典实战之OkDownload的文件分段下载及合成原理
本文介绍了 OkDownload,一个高效的 Android 下载引擎,支持多线程下载、断点续传等功能。文章详细描述了文件分段下载及合成原理,包括任务创建、断点续传、并行下载等步骤,并展示了如何通过多种机制保证下载的稳定性和完整性。
71 0
|
2月前
|
Ubuntu 开发工具 Android开发
Repo下载、编译AOSP源码:基于Ubuntu 21.04,android-12.1.0_r27
文章记录了作者在Ubuntu 21.04服务器上配置环境、下载并编译基于Android 12.1.0_r27版本的AOSP源码的过程,包括解决编译过程中遇到的问题和错误处理方法。
111 0
|
Android开发 UED 数据格式
android AsyncTask介绍
转自博客: http://www.cnblogs.com/devinzhang/archive/2012/02/13/2350070.html AsyncTask和Handler对比 1 ) AsyncTask实现的原理,和适用的优缺点 ...
839 0
|
Android开发 Java UED