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 ParamsProgress and Result, and 4 steps, calledonPreExecutedoInBackgroundonProgressUpdate and onPostExecute.

//一个异步任务被定义在运行后台线程和结果返回值UI线程的操作里面,一个异步任务定义了3个泛型,调用传入参数、执行进度和执行结果,并调用这4步:onPreExecutedoInBackgroundonProgressUpdate 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. linux下getrlimit与sysconf函数

    #include <stdio.h> #include <sys/time.h> #include <sys/resource.h> int main(int ar ...

  2. 【Unity】用代码给按钮动态添加点击事件

    问题:多数情况下用UGUI的Button控件身上的OnClick()列表可以指明该按钮点击后触发的回调.现在想要调用自定义脚本里的方法,当这个脚本挂在Button所属的Canvas身上时,传入Canv ...

  3. ExtJs 常用小技巧备忘录

    1. ExtJs 给fieldLabel与fieldInput添加样式{给Input标签加入图标}http://www.w3school.com.cn/cssref/pr_background.asp ...

  4. TCP/IP状态详解[转]

    TCP正常建立和关闭的状态变化     TCP连接的建立可以简单的称为三次握手,而连接的中止则可以叫做 四次握手.   建立连接   在TCP/IP协议中,TCP协议提供可靠的连接服务,采用三次握手建 ...

  5. TCPdump抓包命令详解

    http://starsliao.blog.163.com/blog/static/89048201062333032563/ TCPdump抓包命令 tcpdump是一个用于截取网络分组,并输出分组 ...

  6. kafka+storm+hbase

    kafka+storm+hbase实现计算WordCount. (1)表名:wc (2)列族:result (3)RowKey:word (4)Field:count 1.解决: (1)第一步:首先准 ...

  7. [转]getHibernateTemplate出现的所有find方法的总结

    一.find(String queryString); 示例:this.getHibernateTemplate().find("from bean.User"); 返回所有Use ...

  8. DataGridView使用技巧七:列顺序的调整、操作行头列头的标题

    一.列顺序的调整 设定DataGridView的AllowUserToOrderColumns为True的时候,用户可以自由调整列的顺序. 当用户改变列的顺序的时候,其本身的Index不好改变,但是D ...

  9. Winform控件:打开文件对话框(OpenFileDialog)

    OpenFileDialog类提供了用户打开文件的功能,它有如下属性: 属性 InitialDirectory:设置对话框的初始目录. Filter: 要在对话框中显示的文件筛选器,例如," ...

  10. JS中的数字比较

    if(parseInt(current_index)!=parseInt(uls)){