zoukankan      html  css  js  c++  java
  • Androidの多线程之更新ui(AsyncTask)

    AsyncTask

    构造(泛型参数)

    外部步骤:

    AsyncTask task = new AsyncTask<params,values,result>();

    task.exec(params);

    内部流程:

    1.void onPreExecute() ;//里头可放些提醒类的东西

    2.result doInBackground(params){publishProgress(values);};//执行任务,取得结果并返回

    3.void onProgressUpdate(values);//接收publishProgress()参数,可以更新进度

    4.void onPostExecute(result);//执行完成,取得结果,可在UI上展示

      1 package com.bvin.aync;
      2 
      3 import java.io.IOException;
      4 
      5 import org.apache.http.HttpResponse;
      6 import org.apache.http.client.ClientProtocolException;
      7 import org.apache.http.client.HttpClient;
      8 import org.apache.http.client.methods.HttpGet;
      9 import org.apache.http.impl.client.DefaultHttpClient;
     10 
     11 import android.app.Activity;
     12 import android.app.ProgressDialog;
     13 import android.graphics.Bitmap;
     14 import android.graphics.BitmapFactory;
     15 import android.os.AsyncTask;
     16 import android.os.Bundle;
     17 import android.os.Handler;
     18 import android.os.Message;
     19 import android.view.View;
     20 import android.widget.Button;
     21 import android.widget.ImageView;
     22 import android.widget.Toast;
     23 
     24 public class AyncActivity extends Activity {
     25     /** Called when the activity is first created. */
     26     private ImageView iv;
     27     private ProgressDialog dialog;
     28     @Override
     29     public void onCreate(Bundle savedInstanceState) {
     30         super.onCreate(savedInstanceState);
     31         setContentView(R.layout.main);
     32        
     33         initViews();
     34     }
     35     
     36     private void initViews(){
     37         Button bt = (Button)findViewById(R.id.bt);
     38         iv =  (ImageView)findViewById(R.id.iv);
     39         
     40         bt.setOnClickListener(new View.OnClickListener() {
     41             
     42             @Override
     43             public void onClick(View v) {
     44                 // TODO Auto-generated method stub
     45                 loadImages();
     46             }
     47         });
     48         
     49         dialog = new ProgressDialog(this);
     50         
     51     }
     52     
     53     private void loadImages(){
     54         
     55         LoadImageTask task = new LoadImageTask();
     56         task.execute("http://avatar.csdn.net/0/3/4/1_mylzc.jpg");
     57     }
     58     
     59     class LoadImageTask extends AsyncTask<String,Integer,Bitmap>{
     60 
     61         @Override
     62         protected Bitmap doInBackground(String... params) {
     63             // TODO Auto-generated method stub
     64             Bitmap bitmap  = null;
     65             HttpGet get = new HttpGet(params[0]);
     66             HttpClient client = new DefaultHttpClient();
     67             try {
     68                 HttpResponse res = client.execute(get);
     69                 bitmap = BitmapFactory.decodeStream(res.getEntity().getContent());
     70             } catch (ClientProtocolException e) {
     71                 // TODO Auto-generated catch block
     72                 e.printStackTrace();
     73             } catch (IOException e) {
     74                 // TODO Auto-generated catch block
     75                 e.printStackTrace();
     76             }
     77             
     78             
     79             return bitmap;
     80         }
     81 
     82         @Override
     83         protected void onPostExecute(Bitmap result) {
     84             // TODO Auto-generated method stub
     85             super.onPostExecute(result);
     86             dialog.dismiss();
     87             if(result!=null){
     88                 iv.setImageBitmap(result);
     89                 Toast.makeText(AyncActivity.this, "图片下载成功", 1000).show();
     90                 
     91             }else{
     92                 
     93                 Toast.makeText(AyncActivity.this, "图片下载失败", 1000).show();
     94             }
     95             
     96         }
     97 
     98         @Override
     99         protected void onPreExecute() {
    100             // TODO Auto-generated method stub
    101             super.onPreExecute();
    102             dialog.show();
    103         }
    104 
    105         @Override
    106         protected void onProgressUpdate(Integer... values) {
    107             // TODO Auto-generated method stub
    108             super.onProgressUpdate(values);
    109         }
    110 
    111         
    112         
    113         
    114         
    115     }
    116 }
  • 相关阅读:
    字符串系列——Immediate Decodability
    Java I/O流操作(四)对象的序列化
    table自动拉伸在chrome与IE中的区别
    【web开发】spring+hibernate4支持中文排序
    SQL批量重命名中文字段名为对应拼音首字母字段名脚本
    Hibernate执行查询后又立马执行了更新(defaultaccess)
    上传图片之上传前预览图片
    挖掘FPTree
    Linux下Json库的编译及代码测试
    C语言中的位运算和逻辑运算
  • 原文地址:https://www.cnblogs.com/bvin/p/2783070.html
Copyright © 2011-2022 走看看