Android中使用AsyncTask下载网页图片的代码清单_第1页
Android中使用AsyncTask下载网页图片的代码清单_第2页
Android中使用AsyncTask下载网页图片的代码清单_第3页
Android中使用AsyncTask下载网页图片的代码清单_第4页
Android中使用AsyncTask下载网页图片的代码清单_第5页
已阅读5页,还剩1页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论