.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>

android AsyncTask实例的更多相关文章

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

    AsyncTask是Android给开发者提供的一个简单轻量级的多线程类,通过它我们可以很容易新建一个线程让在后台做一些耗时的操作(如IO操作.网络访问等),并在这个过程中更新UI.之所以说它轻量级, ...

  2. Android AsyncTask 深度理解、简单封装、任务队列分析、自定义线程池

    前言:由于最近在做SDK的功能,需要设计线程池.看了很多资料不知道从何开始着手,突然发现了AsyncTask有对线程池的封装,so,就拿它开刀,本文将从AsyncTask的基本用法,到简单的封装,再到 ...

  3. android AsyncTask介绍(转)

    android AsyncTask介绍 AsyncTask和Handler对比 1 ) AsyncTask实现的原理,和适用的优缺点 AsyncTask,是android提供的轻量级的异步类,可以直接 ...

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

    转载请注明出处:http://blog.csdn.net/guolin_blog/article/details/11711405 我们都知道,Android UI是线程不安全的,如果想要在子线程里进 ...

  5. 为什么Android AsyncTask的使用要遵循五大原则

    引言 AsyncTask是一个围绕Handler和Thread而设计的助手类,封装了在工作线程中与UI交互的细节,只需要对应重写几个回调方法即可,并使得代码更加简洁,优雅.但要注意的是AsyncTas ...

  6. android AsyncTask异步任务(笔记)

    AsyncTask是一个专门用来处理后台进程与UI线程的工具.通过AsyncTask,我们可以非常方便的进行后台线程和UI线程之间的交流. 那么AsyncTask是如何工作的哪. AsyncTask拥 ...

  7. Android AsyncTask 源代码分析

    AsyncTask源代码分析 public abstract class AsyncTask<Params, Progress, Result> { //日志TAG private sta ...

  8. Android -- AsyncTask 使用和缺陷

    一.AsyncTask的基本用法 由于AsyncTask是一个抽象类,所以如果我们想使用它,就必须要创建一个子类去继承它.在继承时我们可以为AsyncTask类指定三个泛型参数,这三个参数的用途如下: ...

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

    我们都知道,Android UI是线程不安全的,如果想要在子线程里进行UI操作,就需要借助Android的异步消息处理机制.之前我也写过了一篇文章从源码层面分析了Android的异步消息处理机制,感兴 ...

随机推荐

  1. C++析构函数调用异常问题研究

    最近又遇到一个奇葩问题,程序在自己的开发机器和某些机器上运行完好,但是在测试人员的几台机器上运行就直接推出了.开始以为是出现了野指针,因为delete野指针时程序会直接退出.代码翻来覆去过来即便确认没 ...

  2. 接口测试之webservice

    什么是Webservice Web service是一个平台独立的,低耦合的,自包含的.基于可编程的web的应用程序,可使用开放的XML(标准通用标记语言下的一个子集)标准来描述.发布.发现.协调和配 ...

  3. 初识Hibernate 缓存

    生活就像一杯咖啡,让你我慢慢的品尝,品尝它的苦涩和甘甜...... 一.什么是Hibernate缓存. 解析:白话来说就是缓存数据的容器 官方标准点缓存:是计算机领域的概念,它介于应用程序和永久性数据 ...

  4. 前端mvc框架backbone.js入门

    关于backbone.js的优缺点,这里就不详谈了,网上关于这方面的讨论很多了,而且各种框架之所以长久生存,通常都是有其特定优势和擅长点的. 使用backbone.js作为前端框架的应用通常都是htm ...

  5. Mac上安装go环境

    Mac 安装 GO语言开发环境 官网:https://golang.org/ go语言的安装:http://docscn.studygolang.com/doc/install 下载:go1.7rc3 ...

  6. JavaScript解析URL参数

    创建一个Js类: var Request = { QueryString: function (item) { var svalue = location.search.match(new RegEx ...

  7. 20款响应式的 HTML5 网页模板【免费下载】

    下面的列表集合了20款响应式的 HTML5 网页模板,这些专业的模板能够让你的网站吸引很多的访客.除了好看的外观,HTML5 模板吸引大家的另一个原因是由于其响应性和流动性.赶紧来看看. 您可能感兴趣 ...

  8. Framer – 将视觉搞转换为更真实的动态原型

    Framer 是一个 JavaScript 框架,简化了创建现实原型,实现完整的3D效果.以一种简单,可读的和强大的方式定义交互和创建动画. 另外还有 Framer Generator  是一个桌面应 ...

  9. GPS坐标互转:WGS-84(GPS)、GCJ-02(Google地图)、BD-09(百度地图)(转载)

    WGS-84:是国际标准,GPS坐标(Google Earth使用.或者GPS模块)GCJ-02:中国坐标偏移标准,Google Map.高德.腾讯使用BD-09:百度坐标偏移标准,Baidu Map ...

  10. Oracle EXP-00091的解决方法

    [sql] EXP-00091: 正在导出有问题的统计信息.www.2cto.com . . 正在导出表                      WF_GENERAL导出了 EXP-00091: 正 ...