AsyncTask——异步任务

 
个人认为这是翻译比较好的一次。。

Class Overview//类概述

AsyncTask enables proper and easy use of the UI thread. This class allows to perform background operations and publish results on the UI thread without having to manipulate threads and/or handlers.

//异步任务用在UI线程更适当和简单,这个类允许执行一个后台运作并且发布结果到UI线程而不需要去操作线程和Handler。

An asynchronous task is defined by a computation that runs on a background thread and whose result is published on the UI thread. An asynchronous task is defined by 3 generic types, called Params, Progress and Result, and 4 steps, calledonPreExecute, doInBackground, onProgressUpdate and onPostExecute.

//一个异步任务被定义在运行后台线程和结果返回值UI线程的操作里面,一个异步任务定义了3个泛型,调用传入参数、执行进度和执行结果,并调用这4步:onPreExecute, doInBackground, onProgressUpdate and onPostExecute.

AsyncTask's generic types//异步任务的泛型参数

The three types used by an asynchronous task are the following:

//这个三个被异步任务调用的类型如下

  1. Params, the type of the parameters sent to the task upon execution.//参数,这个参数将发送至执行体
  2. Progress, the type of the progress units published during the background computation.//进度,在后台操作期间这个参数将被不断发布出去
  3. Result, the type of the result of the background computation.//结果,后台运作的结果

Not all types are always used by an asynchronous task. To mark a type as unused, simply use the type Void:

//不是所有的类型都要用在异步任务上,也可标志为不需使用,参数类型改为Void即可。

private class MyTask extends AsyncTask<Void, Void, Void> { ... }

The 4 steps//四大部

When an asynchronous task is executed, the task goes through 4 steps://当一个异步任务执行了,将会走一下

  1. onPreExecute(), invoked on the UI thread immediately after the task is executed. This step is normally used to setup the task, for instance by showing a progress bar in the user interface.//这个方法调用在UI线程在任务执行了就立即调用这个函数。这一步通常设置一个任务,例如可以显示一个进度条。
  2. doInBackground(Params...), invoked on the background thread immediately after onPreExecute() finishes executing. This step is used to perform background computation that can take a long time. The parameters of the asynchronous task are passed to this step. The result of the computation must be returned by this step and will be passed back to the last step. This step can also use publishProgress(Progress...) to publish one or more units of progress. These values are published on the UI thread, in the onProgressUpdate(Progress...) step.//这个方法在 onPreExecute()执行完毕就立即执行此方法,这步用以执行一个耗时的任务,异步任务Params的参数将传至这一步,执行的结果必须在这一步返回并回传至最后一步即onPostExecute(Result)。在这里也可以用publishProgress()发布一个或多个进度。这些值将在onProgressUpdate(Progress...)  方法里,传送至UI线程
  3. onProgressUpdate(Progress...), invoked on the UI thread after a call to publishProgress(Progress...).  The timing of the execution is undefined. This method is used to display any form of progress in the user interface while the background computation is still executing. For instance, it can be used to animate a progress bar or show logs in a text field.//这一步要注意咯,这个方法是调用在publishProgress(Progress...)方法后,如果步调用publishProgress()将不走一步哦。这个方法可以在UI上显示任何样式的进度当后台任务还在执行时。例如它可以被用在更新一个进度条上,或者显示文字性的日志。
  4. onPostExecute(Result), invoked on the UI thread after the background computation finishes. The result of the background computation is passed to this step as a parameter.//这一部是在异步任务执行完时调用。执行的结果将以参数的形式传递至这一步。

Threading rules//线程规则

There are a few threading rules that must be followed for this class to work properly:

//这个累必须符合以下规则才能正确的执行

 

Memory observability//内存观察

AsyncTask guarantees that all callback calls are synchronized in such a way that the following operations are safe without explicit synchronizations.异步任务必须保证所有的回调都是线程安全的同步的。

Android英文文档翻译系列(3)——AsyncTask的更多相关文章

  1. Android英文文档翻译系列(1)——AlarmManager

      原文:个人翻译,水平有限,欢迎看官指正.                                                              public class Ala ...

  2. Android英文文档翻译系列(6)——LocalBroadcastManager

    public class LocalBroadcastManager extends Object java.lang.Object    ↳ android.support.v4.content.L ...

  3. Android英文文档翻译系列(5)——VPNService

      API14位于android.net.VpnService 类概述|Class OverviewVpnService is a base class for applications to ext ...

  4. Android英文文档翻译系列(4)——PopupWindow

    public class PopupWindow extends Object //直接继承至Object java.lang.Object ↳ android.widget.PopupWindow  ...

  5. Android英文文档翻译系列(2)——HandlerThread

      public class   HandlerThread extends Thread   Class  Overview Handy class for starting a new threa ...

  6. Android异步处理系列文章四篇之四 AsyncTask的实现原理

    Android异步处理一:使用Thread+Handler实现非UI线程更新UI界面Android异步处理二:使用AsyncTask异步更新UI界面Android异步处理三:Handler+Loope ...

  7. Android异步处理系列文章四篇之二 使用AsyncTask异步更新UI界面

    Android异步处理一:使用Thread+Handler实现非UI线程更新UI界面Android异步处理二:使用AsyncTask异步更新UI界面Android异步处理三:Handler+Loope ...

  8. 【转载】Android异步处理系列文章

    本博文地址:http://blog.csdn.net/mylzc/article/details/6777767 转载请注明出处. 为了给用户带来良好的交互体验,在Android应用的开发过程中需要把 ...

  9. Android之Activity系列总结(一)--Activity概览

    Activity 本文内容 创建 Activity 实现用户界面 在清单文件中声明 Activity 启动 Activity 启动 Activity 以获得结果 结束 Activity 管理 Acti ...

随机推荐

  1. mysql按年度、季度、月度、周、日统计查询的sql语句

    本文介绍一些mysql中用于查询的sql语句,包括按年度.季度.月度.周.日统计查询等,有需要的朋友,可以参考下. 一.年度查询 查询 本年度的数据   SELECT * FROM blog_arti ...

  2. Linux下Kill函数用法

    http://www.cnblogs.com/winnxm/archive/2010/01/22/1654502.html 用于向任何进程组或进程发送信号. #include <sys/type ...

  3. Nginx动静分离知识及配置

    Nginx动静分离知识及配置,本质上与分离上传下载功能是相同功能,本质就是在文件服务器也是需要部署WEB应用的,只是在进行代理分离的时候分配到对应的文件服务器上去. 随着Nginx高性能Web服务器大 ...

  4. 单片机小白学步系列(二十) IO口原理

    IO口操作是单片机实践中最基本最重要的一个知识,本篇花了比較长的篇幅介绍IO口的原理. 也是查阅了不少资料,确保内容正确无误,花了非常长时间写的. IO口原理原本须要涉及非常多深入的知识,而这里尽最大 ...

  5. yarn 用户导致的被挖矿 启用Kerberos认证功能,禁止匿名访问修改8088端口

    用户为dr.who,问下内部使用人员,都没有任务在跑: 结论: 恭喜你,你中毒了,攻击者利用Hadoop Yarn资源管理系统REST API未授权漏洞对服务器进行攻击,攻击者可以在未授权的情况下远程 ...

  6. DataGridView使用技巧五:自动设定列宽和行高

    一.设定行高和列宽自动调整 设定包括Header和所有单元格的列宽自动调整 //设置包括Header和所有单元格的列宽自动调整 this.dgv_PropDemo.AutoSizeColumnsMod ...

  7. java-request与response编码问题

    一.request.setCharacterEncoding("utf-8") 二.response.setContentType("text/html;charset= ...

  8. 网络openvpn各种问题

    今天先配置在同一个vmc下的一个openvpn里的两个虚拟机,同一个网段 一开始出现了如下问题: eth0: ERROR while getting interface flags: No such ...

  9. R语言扩展包dplyr笔记

    引言 2014年刚到, 就在 Feedly 订阅里看到 RStudio Blog 介绍 dplyr 包已发布 (Introducing dplyr), 此包将原本 plyr 包中的 ddply() 等 ...

  10. Python if-else and while

    if-elif语法 if condition: [tab键] command elif condition: [tab键] command elif condition: [tab键] command ...