AsyncTask

类的简介:

AsyncTask可以使UI线程更合理更简单的使用。这个类允许执行后台操作,而且可以在不使用多线程或handlers的情况下给主线程传输数据。

异步任务
被定义为在后台进行的运算,结果发布到主线程。

异步任务
被三种类型和四个步骤所定义,三种类型分别是Params,Progress,Result和四个步骤分别是begin,doInBackground,processProgress和end。

使用方法:

异步任务必须被继承使用,它的子类至少要覆写方法:doInBackground方法,通常也要覆写另一个方法:onPostExecute(Result)。

上面的代码是其子类异步下载文件的示例。

异步任务的三种类型

异步任务的三种类型的描述如下:

1.Params:发送给正在执行的任务的参数(参数类型)。

2.Progress:正在后台运算的时候发布的进度(进度类型)

3.Result:后台运算的结果(返回值的类型)

异步任务并不非得使用所有这些类型,为了标记不使用的类型,简单的在其位置上填入Void。

比如:上面的代码。

四个步骤:

当一个一步任务执行时,任务的四个步骤如下:

1.onPreExecute(),在异步执行时立即被UI线程调用,这一步通常用来设置任务,比如在用户界面显示进度条。

2.doInBackground(Params…),当onPreExecute()方法执行完成时立即被后台线程调用。这一步用来执行耗时间的后台操作。异步任务的参数被传到这一步里。操作的结果必须在这一步被返回并且会被传到最后一步。这一步也可以使用publishProgress(Progress…)来发布一个或者多个进度单位。这些值在onProgressUpdate(Progress…)这一步被发布到UI进程中

3.onProgressUpdate(Progress…),在调用publishProgress(Progress…)之后被UI线程调用,执行的时间不定。这个方法用来在后台操作仍在执行的时候在用户界面显示不同形式的进度。比如它可以推动进度条进度或者在文本里显示log信息。

4.onPostExecute(Result…),在后台程序结束后被UI线程调用。后台程序执行的结果以参数的形式传给这一步。

线程规则

为了是这一个类更好的被使用,要遵循下面几个原则:

1任务实例必须在主线程中创建

2Execute(Params…)必须被UI线程调用

3不用手动的调用onPreExecute(),onPostExecute(Result),
dolnBackgrcund(Params. . .), onProgressUpdate(Progress..
.)

4任务只能被执行一次(当尝试执行第二个时会抛出异常)

api 翻译之AsyncTask的更多相关文章

  1. WebSettings 文档 API 翻译 常用设置

    . setDefaultFontSize(int size)  Sets the default font size. The default is 16. setDefaultTextEncodin ...

  2. python使用百度api翻译中英文

    python使用百度api翻译中英文 写程序取变量名的时候,常常需要翻译单词,或者将中文翻译成英语.有道词典,必应词典都很好,可是...命令行习惯了还是觉得用在cmd里面调出程序使用起来也许会更爽.于 ...

  3. C# 有道API翻译 查询单词详细信息

    原文:C# 有道API翻译 查询单词详细信息 有道云官方文档 有道云翻译API简介:http://ai.youdao.com/docs/doc-trans-api.s#p01 有道云C#Demo : ...

  4. Monkey Android API 翻译

      此篇笔记,记录了API中,对monkey用法的说明,基于Android Studio 2.2.3. Monkey是一个运行在Android模拟器或者Android设备上的程序,通过使用monkey ...

  5. 【Android Api 翻译3】android api 完整翻译之Application Fundamentals (学习android必须知道的)

    Android应用程序是用Java编程语言编写的.Android SDK工具把应用程序的代码.数据和资源文件一起编译到一个Android程序包中(这个程序包是以.apk为后缀的归档文件),一个Andr ...

  6. Win32 API翻译

    这是从MSDN里面的Win32 SDK API函数.结构.通知.消息等等超过3000个.其中一半是整理自别人翻译. http://files.cnblogs.com/files/sishenzaixi ...

  7. angular -- $route API翻译

    $route -$routeProvider服务 -依赖ngRoute模块 $route能够在路径发生改变的时候,渲染不同的视图,调用不同的控制器.它监测了$location.url(),然后根据路径 ...

  8. C#调百度通用翻译API翻译HALCON的示例描述

    目录 准备工作 参数简介 输入参数 输出参数 使用HttpClient 翻译工具类 应用:翻译HALCON的示例描述 准备工作 HALCON示例程序的描述部分一直是英文的,看起来很不方便.我决定汉化一 ...

  9. DOJO官方API翻译或解读-dojo/store (自定制存储器)

    dojo/store 是对已存数据的访问和存储的统一接口,dojo/store意图以一个简单.易于使用和扩展的API来,替代.集合和改善 dojo/data 和dojox/storage .基于HTM ...

随机推荐

  1. Python基础 初识Python

    机器码 机器码(machine code),学名机器语言指令,有时也被称为原生码(Native Code),是电脑的CPU可直接解读的数据. 通常意义上来理解的话,机器码就是计算机可以直接执行,并且执 ...

  2. HDU1000

    哈哈A+B #include<stdio.h> int main() { int a,b; while(scanf("%d%d",&a,&b)!=EOF ...

  3. 修改Android 程序的icon快捷方式图标和名称

    在res/drawable-hdpi或res/drawable-ldpi或res/drawable-mdpi目录下,加下你要显示的图片,最好后缀是为.png的,然后修改AndroidManifest. ...

  4. 为Eclipse/MyEclipse添加JDK API Document帮助文档

    1.下载 Java SE Development Kit 8 Documentation . 2.启动Eclipse,Window-Preference-Java-Installed JREs: 3. ...

  5. Android读取assets目录下的资源

    1.获取资源的输入流 资源文件 sample.txt 位于 $PROJECT_HOME/assets/ 目录下,可以在 Activity 中通过 Context.getAssets().open(“s ...

  6. easyui datagrid 的分页刷新按钮

    datagrid  刷新bug: 情形: 当用户A,B  同时操作 datagrid时(记录1,记录2.记录3).如果A如果删除记录1,  B此时已选中了记录1 ,记录2 , 这时B点击分页中的刷新按 ...

  7. memcached Logging

    For reasons now relegated to history, Spy has its own logging implementation. However, it is compati ...

  8. EasyUI-Tab 标签添加右键菜单

    在网上看了很多demo 自己实现了一个效果如下 <!doctype html> <html> <head> <meta http-equiv="co ...

  9. AnimImageView

    https://github.com/eltld/AnimImageView

  10. Java虚拟机工作原理具体解释

    一.类载入器 首先来看一下java程序的运行过程. 从这个框图非常easy大体上了解java程序工作原理.首先,你写好java代码,保存到硬盘其中.然后你在命令行中输入 javac YourClass ...