android AsyncTask实例

.java

 1 package com.example.activitydemoay;
 2
 3 import android.app.Activity;
 4 import android.content.Intent;
 5 import android.os.AsyncTask;
 6 import android.os.Bundle;
 7 import android.view.View;
 8 import android.widget.Button;
 9 import android.widget.ProgressBar;
10 import android.widget.TextView;
11
12 public class MainActivity extends Activity {
13
14     Button download;
15     ProgressBar pb;
16     TextView tv;
17
18     @Override
19     protected void onCreate(Bundle savedInstanceState) {
20         super.onCreate(savedInstanceState);
21         setContentView(R.layout.activity_main);
22
23         pb = (ProgressBar) findViewById(R.id.pb);
24         tv = (TextView) findViewById(R.id.tv);
25
26         download = (Button) findViewById(R.id.download);
27         download.setOnClickListener(new View.OnClickListener() {
28             @Override
29             public void onClick(View v) {
30                 DownloadTask dTask = new DownloadTask();
31                 dTask.execute(100);
32             }
33         });
34     }
35
36     class DownloadTask extends AsyncTask<Integer, Integer, String> {
37         // 后面尖括号内分别是参数(例子里是线程休息时间),进度(publishProgress用到),返回值 类型
38
39         @Override
40         protected void onPreExecute() {
41             // 第一个执行方法
42             super.onPreExecute();
43         }
44
45         @Override
46         protected String doInBackground(Integer... params) {
47             // 第二个执行方法,onPreExecute()执行完后执行
48             for (int i = 0; i <= 100; i++) {
49                 pb.setProgress(i);
50                 publishProgress(i);
51                 try {
52                     Thread.sleep(params[0]);
53                 } catch (InterruptedException e) {
54                     e.printStackTrace();
55                 }
56             }
57             return "执行完毕";
58         }
59
60         @Override
61         protected void onProgressUpdate(Integer... progress) {
62             // 这个函数在doInBackground调用publishProgress时触发,虽然调用时只有一个参数
63             // 但是这里取到的是一个数组,所以要用progesss[0]来取值
64             // 第n个参数就用progress[n]来取值
65             tv.setText(progress[0] + "%");
66             super.onProgressUpdate(progress);
67         }
68
69         @Override
70         protected void onPostExecute(String result) {
71             // doInBackground返回时触发,换句话说,就是doInBackground执行完后触发
72             // 这里的result就是上面doInBackground执行后的返回值,所以这里是"执行完毕"
73             setTitle(result);
74             Intent intent = new Intent();
75             // Intent传递参数
76 //            intent.putExtra("TEST", "123");
77 //            intent.setClass(MainActivity.this, MainActivityB.class);
78 //            MainActivity.this.startActivity(intent);
79             super.onPostExecute(result);
80         }
81
82     }
83
84 }

.xml

 1 <?xml version="1.0" encoding="utf-8"?>
 2 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
 3     android:orientation="vertical"
 4     android:layout_width="fill_parent"
 5     android:layout_height="fill_parent"
 6     >
 7     <TextView
 8        android:layout_width="fill_parent"
 9        android:layout_height="wrap_content"
10        android:text="Hello , Welcome to Andy‘s Blog!"/>
11     <Button
12        android:id="@+id/download"
13        android:layout_width="fill_parent"
14        android:layout_height="wrap_content"
15        android:text="Download"/>
16     <TextView
17        android:id="@+id/tv"
18        android:layout_width="fill_parent"
19        android:layout_height="wrap_content"
20        android:text="当前进度显示"/>
21     <ProgressBar
22        android:id="@+id/pb"
23        android:layout_width="fill_parent"
24        android:layout_height="wrap_content"
25        style="?android:attr/progressBarStyleHorizontal"/>
26 </LinearLayout>  
时间: 2024-08-08 13:53:37

android AsyncTask实例的相关文章

Android学习笔记:多个AsyncTask实例的并发问题

AsyncTask是Android给开发者提供的一个简单轻量级的多线程类,通过它我们可以很容易新建一个线程让在后台做一些耗时的操作(如IO操作.网络访问等),并在这个过程中更新UI.之所以说它轻量级,是因为不需要直接使用Handler.Thread等知识,使用起来比较简单,但也失去了一些灵活性,对于一些复杂的场景处理起来不方便. 如果一个APP进程中同时只创建和运行一个AsyncTask实例,则不会有任何问题.但如果在一个进程中如果有多个AsyncTask任务同时在执行,问题就比较复杂了.下面我

android Asynctask的优缺点?能否同时并发100+asynctask呢?

一  Asynctask的优缺点? AsyncTask,是android提供的轻量级的异步类,可以直接继承AsyncTask,在类中实现异步操作,并提供接口反馈当前异步执行的程度(可以通过接口实现UI进度更新),最后反馈执行的结果给UI主线程. 优点: 1.简单,快捷 2.过程可控 3.使用的缺点: 缺点: 在使用多个异步操作和并需要进行Ui变更时,就变得复杂起来. Android的AsyncTask比Handler更轻量级一些,适用于简单的异步处理. 首先明确Android之所以有Handle

android AsyncTask介绍

本文转自:http://www.cnblogs.com/devinzhang/archive/2012/02/13/2350070.html 写的很好,向你们推荐 android AsyncTask介绍 AsyncTask和Handler对比 1 ) AsyncTask实现的原理,和适用的优缺点 AsyncTask,是android提供的轻量级的异步类,可以直接继承AsyncTask,在类中实现异步操作,并提供接口反馈当前异步执行的程度(可以通过接口实现UI进度更新),最后反馈执行的结果给UI主

android AsyncTask使用

/** * 作者:crazyandcoder * 联系: * QQ : 275137657 * email: [email protected] * 转载请注明出处! */ 异步任务 AsyncTask使用 android中实现异步机制主要有Thread加Handler和AsyncTask,今天主要记录一下AsyncTask的学习过程,以备以后之需.  一.构建AsyncTask子类的参数         AsyncTask<Params,Progress,Result>是一个抽象类.通常用于

Android AsyncTask完全解析,带你从源码的角度彻底理解

转载请注明出处:http://blog.csdn.net/guolin_blog/article/details/11711405 我们都知道,Android UI是线程不安全的,如果想要在子线程里进行UI操作,就需要借助Android的异步消息处理机制.之前我也写过了一篇文章从源码层面分析了Android的异步消息处理机制,感兴趣的朋友可以参考 Android Handler.Message完全解析,带你从源码的角度彻底理解 . 不过为了更加方便我们在子线程中更新UI元素,Android从1.

[学习总结]7、Android AsyncTask完全解析,带你从源码的角度彻底理解

我们都知道,Android UI是线程不安全的,如果想要在子线程里进行UI操作,就需要借助Android的异步消息处理机制.之前我也写过了一篇文章从源码层面分析了Android的异步消息处理机制,感兴趣的朋友可以参考 Android Handler.Message完全解析,带你从源码的角度彻底理解 . 不过为了更加方便我们在子线程中更新UI元素,Android从1.5版本就引入了一个AsyncTask类,使用它就可以非常灵活方便地从子线程切换到UI线程,我们本篇文章的主角也就正是它了. Asyn

Android AsyncTask 详细解析

结构 继承关系 public abstract class AsyncTask extends Object java.lang.Object android.os.AsyncTask<Params, Progress, Result> 类概述 AsyncTask能够适当地.简单地用于 UI线程. 这个类不需要操作线程(Thread)就可以完成后台操作将结果返回UI. 异步任务的定义是一个在后台线程上运行,其结果是在 UI线程上发布的计算. 异步任务被定义成三种泛型类型: Params,Pro

android Asynctask的优缺点?是否能同一时候并发100+asynctask呢?

一  Asynctask的优缺点? AsyncTask,是android提供的轻量级的异步类,能够直接继承AsyncTask,在类中实现异步操作,并提供接口反馈当前异步运行的程度(能够通过接口实现UI进度更新),最后反馈运行的结果给UI主线程. 长处: 1.简单,快捷 2.过程可控 3.使用的缺点: 缺点: 在使用多个异步操作和并须要进行Ui变更时,就变得复杂起来. Android的AsyncTask比Handler更轻量级一些,适用于简单的异步处理. 首先明白Android之所以有Handle

Android AsyncTask工作原理

AsyncTask能够适当简单的使用在UI线程,在没有任务线程和handler的情况下,这个类也允许执行后台操作并将结果显示在UI线程上. AsyncTask的引入,我们在执行完耗时的后台任务后可以很方便的更新UI元素.相信大多数同学对AsyncTask的用法都已经很熟悉,那这里不在叙述他的基本用法了. AsyncTask的实现原理是封装线程池和消息机制,我已经在自己的博客写过了线程池和消息机制的.感兴趣的同学可以去阅读下. 那么直接进入AsyncTask的源码分析,一起从源码的角度彻底理解.