android AsyncTask异步下载并更新进度条
2013-06-18 15:55
393 查看
第一个参数:String传入的是需要下载的地址
第二个参数:Integer是进度条的进度
第三个参数:String下载后的结果,如果您下载的是一张图片,可以将它改成BitMap
示例代码如下:
packagecom.example.testcctv;
importjava.io.ByteArrayOutputStream;
importjava.io.File;
importjava.io.FileOutputStream;
importjava.io.IOException;
importjava.io.InputStream;
importjava.net.HttpURLConnection;
importjava.net.MalformedURLException;
importjava.net.URL;
importorg.apache.http.HttpStatus;
importandroid.os.AsyncTask;
importandroid.util.Log;
importandroid.widget.ProgressBar;
/*****************************************************************************************************************************************
*异步线程下载类参数说明:第一个参数:String传入的是需要下载的地址第二个参数:Integer是进度条的进度第三个参数:String
*下载后的结果,如果您下载的是一张图片,可以将它改成BitMap
*****************************************************************************************************************************************/
publicclassDownloadAsyncTaskextendsAsyncTask<String,Integer,String>{
privatefinalProgressBarbar;
privateintcount=0;
publicDownloadAsyncTask(ProgressBarbar){
super();
this.bar=bar;
}
@Override
protectedStringdoInBackground(String...params){
try{
URLurl=newURL(params[0]);
HttpURLConnectionconnection=(HttpURLConnection)url
.openConnection();
connection.setConnectTimeout(10*1000);
connection.connect();
if(connection.getResponseCode()==HttpStatus.SC_OK){
bar.setMax(connection.getContentLength());
Filefile=newFile(params[1]);
file.createNewFile();
InputStreaminputStream=connection.getInputStream();
ByteArrayOutputStreamarrayOutputStream=newByteArrayOutputStream();
byte[]buffer=newbyte[10*1024];
while(true){
intlen=inputStream.read(buffer);
publishProgress(len);
if(len==-1){
break;
}
arrayOutputStream.write(buffer,0,len);
}
arrayOutputStream.close();
inputStream.close();
byte[]data=arrayOutputStream.toByteArray();
FileOutputStreamfileOutputStream=newFileOutputStream(file);
fileOutputStream.write(data);
fileOutputStream.close();
}
}catch(MalformedURLExceptione){
e.printStackTrace();
}catch(IOExceptione){
e.printStackTrace();
}
return"下载完成";
}
@Override
protectedvoidonCancelled(){
//TODOAuto-generatedmethodstub
super.onCancelled();
}
@Override
protectedvoidonPostExecute(Stringresult){
Log.v("Fover",result);
super.onPostExecute(result);
}
@Override
protectedvoidonPreExecute(){
//TODOAuto-generatedmethodstub
super.onPreExecute();
}
@Override
protectedvoidonProgressUpdate(Integer...values){
count+=values[0];
bar.setProgress(count);
super.onProgressUpdate(values);
}
}
使用方法:
//第一个值是下载地址,第二个值是保存地址
String[]downLoadPath={
HTTPURL,
Environment.getExternalStorageDirectory()
+"/dujinyang/dudu.apk"};
DownloadAsyncTaskasynTask=newDownloadAsyncTask(progressBar);
asynTask.execute(downLoadPath);
相关文章推荐
- android AsyncTask异步下载并更新进度条
- android AsyncTask异步下载并更新进度条
- android AsyncTask异步下载并更新进度条
- android AsyncTask异步下载并更新进度条
- android AsyncTask异步下载并更新进度条
- Android中使用AsyncTask实现下载文件动态更新进度条功能
- Android中使用AsyncTask实现文件下载以及进度更新提示
- Android 异步AsyncTask下载 含有进度条
- Android中使用AsyncTask实现文件下载以及进度更新提示
- Android中使用AsyncTask实现文件下载以及进度更新提示
- Android中使用AsyncTask实现文件下载以及进度更新提示
- android使用AsyncTask来实现更新进度条
- android 应用内版本更新,带下载进度条
- Android 异步任务——AsyncTask (附使用AsyncTask下载图片Demo)
- android异步下载图片并显示水平进度条
- Android更新下载进度条
- Android异步处理系列文章四篇之二 使用AsyncTask异步更新UI界面
- Android应用开发——使用AsyncTask异步更新UI界面
- Android多线程分析之五:使用AsyncTask异步下载图像
- Android关于后台下载前台通知更新进度条的问题