




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、Android中使用AsyncTask下载网页图片的代码清单范美英(北京信息职业技术学院)摘 要:Android应用开发中AsyncTask是异步线程,本文详细罗列了使用AsyncTask下载网页图片的代码清单。关键词: Android;AsyncTask;代码清单1 src/MainActivity.java类的代码package com.zyk.download_pics_async;import java.io.ByteArrayOutputStream;import java.io.InputStream;import org.apache.http.HttpEntity;import
2、 org.apache.http.HttpResponse;import org.apache.http.client.HttpClient;import org.apache.http.client.methods.HttpGet;import org.apache.http.impl.client.DefaultHttpClient;import org.apache.http.util.EntityUtils;import android.app.Activity;import android.graphics.Bitmap;import android.graphics.BitmapF
3、actory;import android.os.AsyncTask;import android.os.AsyncTask.Status;import android.os.Bundle;import android.util.Log;import android.view.View;import android.widget.Button;import android.widget.ImageView;import android.widget.ProgressBar;import android.widget.TextView;public class MainActivity exte
4、nds Activity private static final String TAG = "test" Button btn_download, btn_cancel;private ProgressBar progressBar; private ImageView img_show; private TextView tv_pro;private static Bitmap bitmap=null;private MyTask mTask; Override public void onCreate(Bundle savedInstanceState) super.
5、onCreate(savedInstanceState); setContentView(R.layout.activity_main); btn_download=(Button) this.findViewById(R.id.btn_download);btn_cancel = (Button) findViewById(R.id.btn_cancel); progressBar = (ProgressBar) findViewById(R.id.pb_downdata); img_show = (ImageView) findViewById(R.id.img_show); tv_pro
6、=(TextView) this.findViewById(R.id.tv_progress); public void clickExecute(View v)/注意每次需new一个实例,新建的任务只能执行一次,否则会出现异常 mTask = new MyTask(); mTask.execute(" btn_download.setEnabled(false); btn_cancel.setEnabled(true); public void clickCancel(View v)/取消一个正在执行的任务,onCancelled方法将会被调用 /取消正在执行的任务/任务被取消后,
7、doInBackground执行完后将不执行onPostExecute/而是被onCancelled方法取代if(mTask.getStatus()=Status.RUNNING)mTask.cancel(true);elsebitmap=null;tv_pro.setText("cancelled");img_show.setImageBitmap(bitmap);progressBar.setProgress(0);btn_download.setEnabled(true);btn_cancel.setEnabled(false);private class MyTas
8、k extends AsyncTask<String, Integer, Bitmap> /第1个执行的方法/该方法的第1个泛型为execute方法的参数类型/第2个泛型表示异步任务在执行的时候将执行的进度返回给UI线程的参数的类型/第3个泛型表示异步任务执行完后返回给UI线程的结果的类型/onPreExecute方法用于在执行后台任务前做一些UI操作 Override protected void onPreExecute() Log.i(TAG, "onPreExecute() called"); tv_pro.setText("loading.&
9、quot;); /doInBackground方法内部执行后台任务,不可在此方法内修改UI Override protected Bitmap doInBackground(String. params) Log.i(TAG, "doInBackground(Params. params) called"); /第2个执行的方法try HttpClient client = new DefaultHttpClient(); HttpGet get = new HttpGet(params0); HttpResponse response = client.execute(g
10、et); if (response.getStatusLine().getStatusCode() = 200) HttpEntity entity = response.getEntity(); byte data = EntityUtils.toByteArray(entity);long total = data.length;Log.i(TAG, "total="+total+"data.length="+data.length);int count = 0; int length = 1024; bitmap = BitmapFactory.d
11、ecodeByteArray(data, 0, data.length); ;while (count <= data.length && !mTask.isCancelled() if(mTask.isCancelled()return null;count += length; /调用publishProgress公布进度,最后onProgressUpdate方法将被执行 publishProgress(int) (count / (float) total) * 100); return bitmap; catch (Exception e) Log.e(MainA
12、ctivity.this.toString(), e.getMessage(); return null; /onProgressUpdate方法用于更新进度信息 Override protected void onProgressUpdate(Integer. progresses) Log.i(TAG, "onProgressUpdate(Progress. progresses) called"); progressBar.setProgress(progresses0); tv_pro.setText("loading." + progresse
13、s0 + "%"); /onPostExecute方法用于在执行完后台任务后更新UI,显示结果 Override protected void onPostExecute(Bitmap result) Log.i(TAG, "onPostExecute(Result result) called"); img_show.setImageBitmap(result);btn_download.setEnabled(false); btn_cancel.setEnabled(true); /onCancelled方法用于在取消执行中的任务时更改UI Over
14、ride protected void onCancelled() Log.i(TAG, "onCancelled() called"); tv_pro.setText("cancelled"); progressBar.setProgress(0); btn_download.setEnabled(true); btn_cancel.setEnabled(false); Overrideprotected void onDestroy() mTask.cancel(true);if(bitmap!=null)bitmap.recycle();super
15、.onDestroy(); 2 res/layout/activity_main.xml的代码清单<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android=" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent"> <Button a
16、ndroid:id="+id/btn_download" android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="开始下载" android:onClick="clickExecute"/> <Button android:id="+id/btn_cancel" android:layout_width="fill_parent"
17、 android:layout_height="wrap_content" android:enabled="false" android:text="取消任务" android:onClick="clickCancel"/> <ProgressBar android:id="+id/pb_downdata" android:layout_width="fill_parent" android:layout_height="wrap_content" android:progress="0" android:max="100" style="?android:attr/progressBarStyleHorizontal"/> <TextView android:id="+id/tv_progress" android:layout_width="wrap_content&
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- DB31/T 553-2012市级医疗机构建筑合理用能指南
- DB31/T 478.24-2017主要工业产品用水定额及其计算方法第24部分:豆制品
- DB31/T 294-2018住宅小区智能安全技术防范系统要求
- DB31/T 1294-2021古树名木和古树后续资源养护质量评价
- DB31/T 1239-2020餐饮服务单位公筷公勺服务规范
- DB31/T 1152-2019政务服务“一网通办”电子文件归档管理技术规范
- DB31/T 1077-2018医院消毒社会化供应服务卫生规范
- 室内设计中的材料搭配与应用考核试卷
- 影视道具制作的跨界合作考核试卷
- 2024年新型热塑弹性体防水卷材成型设备资金申请报告代可行性研究报告
- 大数据与人工智能营销智慧树知到期末考试答案章节答案2024年南昌大学
- 工程建设平移合同范本
- 新《主体结构及装饰装修》考试习题库(浓缩500题)
- 免拆底模钢筋桁架楼承板图集
- 寻梦环游记(Coco)中英文台词对照
- 宁夏2022年中考地理试卷(含答案)
- 颈椎骨折的护理课件
- 道德与法治《我们的衣食之源》教案教学设计(公开课)四年级下册
- Unit6 Living History of Culture同步梳理-【中职专用】高三英语寒假自学课(高教版2021·基础模块3)
- 反应堆热工分析课程设计报告书
- TL-PMM180超低烟尘使用及维护培训
评论
0/150
提交评论