AsyncTask应用示例

  1 package com.example.testdemo;
  2 
  3 import java.io.ByteArrayOutputStream;
  4 import java.io.IOException;
  5 import java.io.InputStream;
  6 
  7 import org.apache.http.HttpResponse;
  8 import org.apache.http.client.HttpClient;
  9 import org.apache.http.client.methods.HttpGet;
 10 import org.apache.http.impl.client.DefaultHttpClient;
 11 import android.os.AsyncTask;
 12 import android.os.Bundle;
 13 import android.app.Activity;
 14 import android.app.ProgressDialog;
 15 import android.graphics.Bitmap;
 16 import android.graphics.BitmapFactory;
 17 import android.view.Menu;
 18 import android.view.View;
 19 import android.view.View.OnClickListener;
 20 import android.widget.Button;
 21 import android.widget.ImageView;
 22 
 23 public class MainActivity extends Activity {
 24 
 25     private  Button btn;
 26     private ImageView mg;
 27     private ProgressDialog pDialog;
 28     private String path="http://himg2.huanqiu.com/attachment2010/111207/zip1323221781/1323221781_6.jpg";
 29     @Override
 30     protected void onCreate(Bundle savedInstanceState) {
 31         super.onCreate(savedInstanceState);
 32         setContentView(R.layout.activity_main);
 33         btn=(Button)findViewById(R.id.button1);
 34         mg=(ImageView)findViewById(R.id.imageView1);
 35         pDialog=new ProgressDialog(this);
 36         pDialog.setTitle("提示");
 37         pDialog.setCancelable(false);
 38         pDialog.setMessage("正在下载,请稍后……");
 39         pDialog.setIcon(R.drawable.ic_launcher);
 40         pDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
 41         btn.setOnClickListener(new OnClickListener() {
 42             
 43             @Override
 44             public void onClick(View v) {
 45                 // TODO Auto-generated method stub
 46                 new MyTask().execute(path);
 47             }
 48         });
 49     }
 50 
 51     @Override
 52     public boolean onCreateOptionsMenu(Menu menu) {
 53         // Inflate the menu; this adds items to the action bar if it is present.
 54         getMenuInflater().inflate(R.menu.activity_main, menu);
 55         return true;
 56     }
 57     
 58     public class MyTask extends AsyncTask<String, Integer, Bitmap>
 59     {
 60 
 61         /* (non-Javadoc)
 62          * @see android.os.AsyncTask#doInBackground(Params[])
 63          */
 64         @Override
 65         protected Bitmap doInBackground(String... params) {
 66             // TODO Auto-generated method stub
 67             Bitmap bitmap=null;
 68             ByteArrayOutputStream outputStream=new ByteArrayOutputStream();
 69             InputStream inputStream=null;
 70             try {
 71                 HttpClient httpClient=new DefaultHttpClient();
 72                 HttpGet httpGet=new HttpGet(params[0]);
 73                 HttpResponse httpResponse=httpClient.execute(httpGet);
 74                 if (httpResponse.getStatusLine().getStatusCode()==200) {
 75                     inputStream=httpResponse.getEntity().getContent();
 76                     long file_length=httpResponse.getEntity().getContentLength();
 77                     byte[] data=new byte[1024];
 78                     int len=0;
 79                     int total=0;
 80                     while ((len = inputStream.read(data)) != -1) {
 81                         total+=len;
 82                         int values=(int)((total/(float)file_length)*100);
 83                         publishProgress(values);
 84                         outputStream.write(data, 0, len);
 85                         
 86                     }
 87                     byte[] result01=outputStream.toByteArray();
 88                     bitmap=BitmapFactory.decodeByteArray(result01, 0, result01.length);
 89                 }
 90                 
 91             } catch (Exception e) {
 92                 // TODO: handle exception
 93                 e.printStackTrace();
 94             }finally{
 95                 if (inputStream != null) {
 96                     try {
 97                         inputStream.close();
 98                     } catch (IOException e) {
 99                         // TODO Auto-generated catch block
100                         e.printStackTrace();
101                     }
102                 }
103             }
104             return bitmap;
105         }
106 
107         @Override
108         protected void onPostExecute(Bitmap result) {
109             // TODO Auto-generated method stub
110             super.onPostExecute(result);
111             pDialog.dismiss();
112             mg.setImageBitmap(result);
113             
114         }
115 
116         @Override
117         protected void onPreExecute() {
118             // TODO Auto-generated method stub
119             super.onPreExecute();
120             pDialog.show();
121         }
122 
123         @Override
124         protected void onProgressUpdate(Integer... values) {
125             // TODO Auto-generated method stub
126             super.onProgressUpdate(values);
127             pDialog.setProgress(values[0]);
128         }
129         
130         
131     }
132 
133 }

 apk下载点击这里TestDemo.apk

原文地址:https://www.cnblogs.com/hyzhou/p/3210621.html