关系:

java.lang.Object
   ↳    android.os.AsyncTask<Params, Progress, Result>

概述:

AsyncTask是Android提供的轻量级异步类;它在后台线程处理耗时的操作然后能够将处理的结果返回给UI线程处理。因为它不涉及到使用Thread和Handler所以简单易用。

使用方法:

首先上一段Android Developer的代码:

 private class DownloadFilesTask extends AsyncTask<URL,
Integer, Long> {

     protected Long doInBackground(URL... urls) {

         int count = urls.length;

         ;

         ; i < count; i++)
{

             totalSize += Downloader.downloadFile(urls[i]);

             publishProgress(());

             // Escape early if cancel() is called

             if (isCancelled()) break;

         }

         return totalSize;

     }

 

     protected void onProgressUpdate(Integer... progress) {

         setProgressPercent(progress[]);

     }

 

     protected void onPostExecute(Long result) {

         showDialog("Downloaded " + result + " bytes");

     }

}
//运行方式
//new DownloadFilesTask().execute(url1, url2, url3);
以下我们看一下详细的使用方法。

1.构建一个类继承AsyncTask

须要注意的是AsyncTask的三中泛型类型
        Params
启动任务运行的输入參数,比方HTTP请求的URL。
        Progress 后台任务运行的百分比。
        Result 后台运行任务终于返回的结果,比方String。 

2.至少实现​ doInBackground (Params... params)这种方法

让我们看一下doInBackground这种方法。

protected abstract Result doInBackground (Params... params)
它接收类型为Params的若干參数,然后返回类型为Result的结果。

3.一般还会实现至少一个 onPostExecute (Result result)方法

protected void onPostExecute (Result result)
它在doInBackground之后被运行,參数就是doInBackground返回的结果。

The 4 steps:

1.onPreExecute()

在AsyncTask被execute之前被运行,通常是做一些准备工作

2.doInBackground(Params...)

在onPreExecute()运行完之后运行,后台线程运行耗时操作

3.onProgressUpdate(Progress...)

在UI线程中运行。在 publishProgress(Progress...)被调用之后运行

4.onPostExecute(Result)

在UI线程中运行,在doInBackground()运行之后运行

Tips:

1.AsyncTask须要在UI线程中载入
2.构建AsyncTask的子类须要在UI线程中
3.execute方法须要在UI线程中被调用
4.对于"The 4 steps"中的四个函数不要自己手动去调用
5.每一个task对象仅仅能被execute一次,不然会报异常



AsyncTask简单入门的更多相关文章

  1. 用IntelliJ IDEA创建Gradle项目简单入门

    Gradle和Maven一样,是Java用得最多的构建工具之一,在Maven之前,解决jar包引用的问题真是令人抓狂,有了Maven后日子就好过起来了,而现在又有了Gradle,Maven有的功能它都 ...

  2. [原创]MYSQL的简单入门

    MYSQL简单入门: 查询库名称:show databases; information_schema mysql test 2:创建库 create database 库名 DEFAULT CHAR ...

  3. Okio 1.9简单入门

    Okio 1.9简单入门 Okio库是由square公司开发的,补充了java.io和java.nio的不足,更加方便,快速的访问.存储和处理你的数据.而OkHttp的底层也使用该库作为支持. 该库极 ...

  4. emacs最简单入门,只要10分钟

    macs最简单入门,只要10分钟  windwiny @2013    无聊的时候又看到鼓吹emacs的文章,以前也有几次想尝试,结果都是玩不到10分钟就退出删除了. 这次硬着头皮,打开几篇文章都看完 ...

  5. 【java开发系列】—— spring简单入门示例

    1 JDK安装 2 Struts2简单入门示例 前言 作为入门级的记录帖,没有过多的技术含量,简单的搭建配置框架而已.这次讲到spring,这个应该是SSH中的重量级框架,它主要包含两个内容:控制反转 ...

  6. Docker 简单入门

    Docker 简单入门 http://blog.csdn.net/samxx8/article/details/38946737

  7. Springmvc整合tiles框架简单入门示例(maven)

    Springmvc整合tiles框架简单入门示例(maven) 本教程基于Springmvc,spring mvc和maven怎么弄就不具体说了,这边就只简单说tiles框架的整合. 先贴上源码(免积 ...

  8. git简单入门

    git简单入门 标签(空格分隔): git git是作为程序员必备的技能.在这里就不去介绍版本控制和git产生的历史了. 首先看看常用的git命令: git init git add git comm ...

  9. 程序员,一起玩转GitHub版本控制,超简单入门教程 干货2

    本GitHub教程旨在能够帮助大家快速入门学习使用GitHub,进行版本控制.帮助大家摆脱命令行工具,简单快速的使用GitHub. 做全栈攻城狮-写代码也要读书,爱全栈,更爱生活. 更多原创教程请关注 ...

随机推荐

  1. HDU 1348 Wall

    题解:计算凸包周长 #include <iostream> #include <cmath> #include <algorithm> const int size ...

  2. 怎样在SharePoint管理中心检查数据库架构版本号、修补级别和修补程序的常规监控

    怎样在SharePoint管理中心检查数据库架构版本号.修补级别和修补程序的常规监控 准备: 确保你是可以訪问管理中心的场管理员. 開始: 1. 打开管理中心--升级和迁移. 2. 点击"查 ...

  3. leetcode第一刷_Path Sum II

    在更新上面一道题的时候我就想,是不是另一道打印路径的,果不其然啊. 这样的题非经常见的,做法也非常easy,我是用一个引用的vector来存,满足条件之后直接压入结果集中,当然也能够用数组之类的,都一 ...

  4. Oracle游标-循环查询表中数据(表名),并执行

    Oralce 表中存有一个字段,该字段存储表名,要把该表中的所有表名查询出来(即表名结果集),且执行结果集from 表名结果集: declare v_ccount ); --定义一个游标变量 curs ...

  5. Quiz 6b Question 8————An Introduction to Interactive Programming in Python

     Question 8 We can use loops to simulate natural processes over time. Write a program that calcula ...

  6. LinkList Operation

    链表典型数据结构: #define ElemType int typedef struct LinkNode{ ElemType value; struct LinkNode* next; }; 相比 ...

  7. 投票系统前台 C#,数据库SQL

    ------------vote.aspx.cs--------------------  private void Page_Load(object sender, System.EventArgs ...

  8. 基于visual Studio2013解决C语言竞赛题之0204实数求值

     题目

  9. 一个简单的基于canvas小游戏

    GDOI2016是我的退役战,不知道是题目画风不对,还是我自身的问题. 不过没关系啦,反正已经进过一次队OI生涯就没有什么遗憾的了. 这几天尝试着去做了个所谓的html5小游戏,略显简陋,但还是写个总 ...

  10. BZOJ 1029: [JSOI2007]建筑抢修

    1029: [JSOI2007]建筑抢修 Description 小刚在玩JSOI提供的一个称之为“建筑抢修”的电脑游戏:经过了一场激烈的战斗,T部落消灭了所有z部落的入侵者.但是T部落的基地里已经有 ...