zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    Qt添加程序图标
    QTcpSocket+QTcpServer+QWebEngineView打造简易聊天室
    Qt聊天室
    QThread+QMutex多线程编程
    Qt设置窗体背景渐变
    Could not resolve host: github.com
    git clone某一分支上的内容
    git基本操作
    C++中的static关键字的总结
    C/C++中static关键字作用总结
  • 原文地址:https://www.cnblogs.com/hyzhou/p/3210621.html
Copyright © 2011-2022 走看看