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 }

Androidの多线程之更新ui(AsyncTask)相关推荐

  1. Androidの多线程之更新ui(Thread+Handler+Message)

    流程: 1.点击开始,显示进度对话框,启动线程,循环发送消息(1-100) 2.更新对话框中的进度,和标题栏的进度 3.到达最大进度值时,关闭对话框,标题栏显示更新完成 解析: 1.在主线程处理han ...

  2. Android多线程界面更新方法的总结

    Android多线程与界面交互的方法 Activity.runOnUiThread(Runnable) View.post(Runnable),View.postDelay(Runnable,long ...

  3. Android子线程更新UI的方法总结

    消息机制,对于Android开发者来说,应该是非常熟悉.对于处理有着大量交互的场景,采用消息机制,是再好不过了.有些特殊的场景,比如我们都知道,在Android开发中,子线程不能更新UI,而主线程又不 ...

  4. android动画如何更新UI(ValueAnimator源码解析)

    概述 android动画经常会碰到卡顿,或者阻塞主进程之类的问题. 为了排查此类问题,不得不对动画原理了解一二,于是作此文. 此文围绕两个主线问题展开: ui更新的频率是如何控制的? 比如,1秒内会更 ...

  5. java 更新ui_你怎么解决Android开发中更新UI报错的异常吗-百度经验

    执行上述代码. 在App中点击"变透明"的按钮后,App就退出了. logcat中打印了这个错: 03-20 14:47:31.326 11640-11796/com.exampl ...

  6. Android多线程UI更新-Handler

    Handler 处理程序允许您发送和处理Message与线程关联的可运行对象MessageQueue.每个 Handler 实例都与单个线程和该线程的消息队列相关联.当你创建一个新的 Handler ...

  7. android java 多线程,Android多线程的四种方式

    当我们启动一个App的时候,Android系统会启动一个Linux Process,该Process包含一个Thread,称为UI Thread或Main Thread.通常一个应用的所有组件都运行在 ...

  8. 为什么子线程中不能直接更新UI

    点击上方"dotNET全栈开发","设为星标" 加"星标★",每天11.50,好文必达 全文约4000字,预计阅读时间8分钟 当初有同事就碰 ...

  9. Android异步处理二:AsynTask介绍和使用AsyncTask异步更新UI界面

    做一下如何同构AsyncTask异步任务来更新UI界面. (1)AsyncTask的介绍 通过上图中的AsyncTask的源码结构图可以看到,主要用于重载的方法是doInBackground(),on ...

最新文章

  1. 伪类的使用之如何在一段文字前面添加一个点
  2. AIX卷管理介绍以及利用空闲PP来创建文件系统
  3. vscode较详细注释的汇编语言hello world 输出程序,第一个汇编程序
  4. 备忘:VC++ 中的异常处理
  5. Android 中的冷启动和热启动
  6. bzoj 3437: 小P的牧场
  7. xctf-supersqli
  8. 计算机网络发展的第四阶段特点,计算机网络基础考试重点.doc
  9. linux后加网卡,Linux添加网卡教程
  10. 敏锐嗅出商机,她瞄准花卉市场的空白,将花店开出名气
  11. 少儿平台e启学用户隐私协议
  12. oracle计算日期倒计时,时间倒算回去到了哪里?│机械倒数计时码表
  13. 阿里的黄金时代|一点财经
  14. 05.17 佘山踏青“徒步爬山” 活动回顾
  15. 解决小程序自定义底部菜单切换闪动
  16. TortoiseSVN控制台提交命令
  17. Leon‘s Life
  18. 计算机一级考试文字处理题知识
  19. web核心 8-filter过滤器 listener监听器 相对路径 绝对路径 项目名路径
  20. docker: cloud not select device driver with “capabilities:[[gpu]]“

热门文章

  1. Ubuntu12.04 安装MySQL简单步骤
  2. 健身励志——肌肉不经锤炼不会增长
  3. 淘气的页数 - 格式化字符串
  4. 树莓派保卫战--防止SSH暴力破解
  5. Timestamp、String、Date之间的转换
  6. linux下安装配置使用memcache,memcached,libevent(后有ubuntu的memcache安装)
  7. android无法实例化服务,Android:无法实例化类:没有空的构造函数
  8. EdgeGallery — MEP — 系统架构
  9. 5G 信令流程 — UE 寻呼(Paging)流程
  10. C 语言编程 — 高级数据类型 — 指针