码迷,mamicode.com
首页 > 其他好文 > 详细

解读AsyncTask

时间:2014-05-09 23:46:38      阅读:304      评论:0      收藏:0      [点我收藏+]

标签:android   des   class   code   java   tar   

要点:AsyncTask主要用于short operations (a few seconds at the most.)。如果你需要“running for long periods of time”,官方推荐使用various APIs provided by the java.util.concurrent pacakge such as Executor, ThreadPoolExecutor and FutureTask.

 

关于该类的三个泛型:

    Params, the type of the parameters sent to the task upon execution.
    Progress, the type of the progress units published during the background computation.
    Result, the type of the result of the background computation.

第一个为传入参数,第二个为progress的类型,第三个为返回结果。

该类四个方法的执行顺序以及要点分别为:

    onPreExecute():运行在 UI thread。
    doInBackground(Params...):运行在后台线程,过程之中可使用publishProgress方法输出过程。
    onProgressUpdate(Progress...):运行在UI线程。
    onPostExecute(Result):运行在UI线程。

 

而关于取消操作,使用cancel(boolean),使用该方法之后,在doInBackground之后的不再是onPostExecute而是 onCancelled(Object),因此,为了做无用功,尽可能在doInBackground里通过isCancelled()确定当前状态。

 

Threading rules

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

还有几个守则必须遵守:

AsyncTask必须在UI线程里读取,必须在UI线程里实例化,execute必须在UI线程里调用,任务只能调用一次。

 

Memory observability

AsyncTask guarantees that all callback calls are synchronized in such a way that the following operations are safe without explicit synchronizations.

关于同步操作。

 

Order of execution

When first introduced, AsyncTasks were executed serially on a single background thread. Starting with DONUT, this was changed to a pool of threads allowing multiple tasks to operate in parallel. Starting with HONEYCOMB, tasks are executed on a single thread to avoid common application errors caused by parallel execution.

If you truly want parallel execution, you can invoke executeOnExecutor(java.util.concurrent.Executor, Object[]) with THREAD_POOL_EXECUTOR.

  在1.6开始,所有的任务使用线程池来搞定,而在3.0开始之后,只是用单线程,来避免各种错误。

  如果还是希望使用并行的操作,请使用executeOnExecutor(java.util.concurrent.Executor, Object[]) with THREAD_POOL_EXECUTOR.

 

 

解读AsyncTask,布布扣,bubuko.com

解读AsyncTask

标签:android   des   class   code   java   tar   

原文地址:http://www.cnblogs.com/yutoulck/p/3718765.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!