AsyncTask360° ----02---- AsyncTask方法代码演示

Android SDK为我们提供了一个后台任务的处理工具AsyncTask。AsyncTask就是一个封装过的后台任务类顾名思义就是异步任务,方便我们维护,Android开发网提示这样的好处可以解决一些线程安全问题,AsyncTask直接继承于Object类,位置为 android.os.AsyncTask。

三个泛型:

Param ,任务执行器需要的数据类型
                 Progress 后台计算中使用的进度单位数据类型
                 Result 后台计算返回结果的数据类型

Java代码:

 1         public class main extends Activity {
 2           ImageView imageView01;
 3           TextView textView;
 4           @Override
 5           public void onCreate(Bundle savedInstanceState) {
 6             super.onCreate(savedInstanceState);
 7             setContentView(R.layout.main);
 8             textView = (TextView) this.findViewById(R.id.TextView01);
 9             imageView01 = (ImageView) this.findViewById(R.id.ImageView01);
10             GetImage getImage = new GetImage();
11             getImage.execute("http://hi.csdn.net/attachment/201010/27/0_1288149117Yk8W.gif");
12           }
13           private class GetImage extends AsyncTask {
14             public GetImage() {
15             super();
16             // TODO Auto-generated constructor stub
17             }
18           @Override
19           protected void onCancelled() {
20             Log.i("czb", "onCancelled is running...");
21             super.onCancelled();
22           }
23           @Override
24           protected void onPostExecute(Object result) {
25             /*
26              * 此方法在主线程执行,任务执行的结果作为此方法的参数返回
27             */
28             Log.i("czb", "onPostExecute is running...");
29             Log.i("czb", "result == null ? " + (result == null));
30             imageView01.setImageBitmap((Bitmap)result);
31             super.onPostExecute(result);
32           }
33           @Override
34           protected void onPreExecute() {
35             /*
36             * 执行预处理,它运行于UI线程,可以为后台任务做一些准备工作,比如绘制一个进度条控件
37             */
38             Log.i("czb", "onPreExecute is running...");
39             super.onPreExecute();
40           }
41           @Override
42           protected void onProgressUpdate(Object... values) {
43             /*
44             * 此方法在主线程执行,用于显示任务执行的进度。
45             */
46             Log.i("czb", "onProgressUpdate is running...");
47             // 由publishProgress传递的值
48             Log.i("czb", "values " + values[0]);
49             super.onProgressUpdate(values);
50           }
51           @Override
52           protected Object doInBackground(Object... params) {
53             /*
54             * 此方法在后台线程执行,完成任务的主要工作,通常需要较长的时间。
55             * 在执行过程中可以调用publicProgress(Progress…)来更新任务的进度。
56             */
57             Log.i("czb", "doInBackground is running...");
58             try {
59               Bitmap bitmap;
60               HttpClient client = new DefaultHttpClient();
61               // params[0]代表连接的url
62               URI uri = URI.create((String) params[0]);
63               HttpGet get = new HttpGet(uri);
64               HttpResponse response = client.execute(get);
65               HttpEntity entity = response.getEntity();
66               long length = entity.getContentLength();
67               Log.i("czb", " " + length);
68               InputStream in = entity.getContent();
69               if (in != null) {
70               ByteArrayOutputStream baos = new ByteArrayOutputStream();
71               /*byte[] buf = new byte[128];
72               int ch = -1;
73               int count = 0;
74               while ((ch = in.read(buf)) != -1) {
75               baos.write(buf, 0, ch);
76               count += ch;
77               if (length > 0) {
78               // 如果知道响应的长度,调用publishProgress()更新进度
79               // onProgressUpdate读取进度
80               publishProgress((int) ((count / (float) length) * 100));
81                }
82               // 为了在模拟器中清楚地看到进度,让线程休眠100ms
83               //Thread.sleep(100);
84             }*/
85            bitmap = BitmapFactory.decodeStream(in);
86            in.close();
87            baos.close();
88            return bitmap;
89           }
90          } catch (Exception e) {
91             e.printStackTrace();
92           }
93          return null;
94         }
95       }
96     }
时间: 2024-11-05 22:58:39

AsyncTask360° ----02---- AsyncTask方法代码演示的相关文章

PHP + MySQL事务操作的实际应用代码演示

以下的文章主要向大家描述的是PHP(PHP培训 php教程 ) + MySQL(MySQL认证 Mysql培训 )事务操作的实际应用代码演示,我们大家都知道在实际LAMP的应用中,一般PHP所使用的是AdoDB来对MySQL数据库进行操作,下面给出AdoDB相应的代码方便大家查阅: startTrans(); 实际,getOne所调用的查询也可以直接放到rowLock来进行,这里只是为了演示效果能更明显些. $adodb->rowLock('book', 'book_id = 123'); $b

Python Web框架Tornado的异步处理代码演示样例

1. What is Tornado Tornado是一个轻量级但高性能的Python web框架,与还有一个流行的Python web框架Django相比.tornado不提供操作数据库的ORM接口及严格的MVC开发模式,但能够提供主要的web server功能.故它是轻量级的:它借助non-blocking and event-driven的I/O模型(epoll或kqueue)实现了一套异步网络库,故它是高性能的. Tornado的轻量级+高性能特性使得它特别适用于提供web api的场合

现场代码演示软件"Snippetty"

Mac平台上有一款功能强大的现场代码演示软件"Snippetty".Snippetty Mac版在实时演示期间,只要您需要下一个演示代码块,就可以单击其托盘图标.你永远不会被卡住,你的演示总是像排练一样工作.有需要的朋友,点击进入这里,下载体验全部Snippetty Mac版功能! 部分功能 1.片段为MARKDOWN花时间准备您的演示作为降价脚本可以通过多种方式帮助您.首先,你有一份关于你将要做什么的书面记录,一旦你交付了演示 - 你做了什么.你有一些东西需要排练,如果你将来需要运行

代码演示C#各版本新功能

代码演示C#各版本新功能 C#各版本新功能其实都能在官网搜到,但很少有人整理在一起,并通过非常简短的代码将每个新特性演示出来. 代码演示C#各版本新功能 C# 2.0版 - 2005 泛型 分部类型 匿名方法 可以为null的值类型 迭代器 协变和逆变 C# 3.0版 - 2007 自动实现的属性 匿名类型 查询表达式(LINQ) Lambda表达式 表达式树 扩展方法 var 分部方法 对象和集合初始值设定项 C# 4.0版 - 2010 dynamic 命名参数/可选参数 泛型中的协变和逆变

javascript 压缩空格代码演示

      压缩空格代码演示 主要是讲解 压缩一个字符串两段空格          例如:javascript函数里的空格不论是这样     var s = "Hello World        ";                                  这样        var s = "       Hello World";                                   这样       var s = "   

c语言学习之结构篇代码演示样例-输入n个同学的姓名,数学英语成绩,依照平均分从低到高排序并输出

#include<stdio.h> void main(){ const int count = 5;//定义数量 struct student{ char name[80]; float math,eng; float aver; }stu[count],temp; //输入 for (int i = 0; i < count; i++){ scanf("%s%f%f", stu[i].name, &stu[i].math, &stu[i].eng)

14种网页jQuery和css3特效插件代码演示

1.网页table增删样式代码 演示和下载地址 2.jQuery左右滑动幻灯片插件 演示和下载地址 3.jQuery文字轮播焦点图 演示和下载地址 4.网页文字焦点图切换 演示和下载地址 5.jQuery a标签锚链滚动特效 演示和下载地址 6.css3自适应导航菜单栏 演示和下载地址 7.jQuery 100计时特效代码 演示和下载地址 8.html5视频播放器自定义美化代码 演示和下载地址 9.网页右侧悬浮滚动特效代码 下载和演示地址 10.网页能拖拽图层移动的js代码 演示和下载地址 11

9种jQuery和css3图片动画特效代码演示

1.自由旋转的jQuery图片 演示和下载地址 2.css3阴影动画效果 演示和下载地址 3.拉窗帘特效图片 演示和下载地址 4.css3文字特效动画 演示和下载地址 5.css3时钟代码 演示和下载地址 6.css3图片放大动画 演示和下载地址 7.jQuery滑块图片展开效果 演示和下载地址 8.css3文字阴影 演示和下载地址 9.jQuery 3d图片旋转特效 演示和下载地址

Java中替换HTML标签的方法代码

这篇文章主要介绍了Java中替换HTML标签的方法代码,需要的朋友可以参考下 replaceAll("\\&[a-zA-Z]{0,9};", "").replaceAll("<[^>]*>", "\n\t") 源码如下: /** * 字符串替换 */ package com.you.model; /** * HTML标签替换 * @author YHD * @version */ public cla