zoukankan      html  css  js  c++  java
  • 【转】Android的线程和线程池(AsyncTask)

    线程只要分为:主线程和子线程主线程主要处理和界面相关的事情,而子线程则往往用于执行耗时的操作,由于Android的特性,如果在主线程中执行耗时操作那么就会导致程序无法及时响应,因此耗时操作必须方法子线程中去执行.
    AsyncTask
    AsyncTask是一种轻量级的异步任务类,它可以在线程池中执行后台任务,然后把执行的进度和最终结果传递到主线程并在主线程中更新UI.从实现上来说,AsyncTask封装了Thread和Handler,通过AsyncTask可以更加方便地执行后台任务以及在主线程中访问UI,但是AsyncTask并不适合执行特别耗时的后台任务。AsyncTask是一个抽象的泛型类,所以如果我们想要使用它,就必须创建一个子类去继承它,在继承时我们可以为AsyncTask类指定三个泛型类。

    Params在执行AsyncTask时需要传入的参数,可用于在后台任务中使用。
    Progress后台任务执行时,如果需要在界面上显示当前的进度,则使用这里指定的泛型作为进度单位
    Result当任务执行完毕后,如果需要对结果进行返回,则使用这里指定的泛型作为返回值类型。一个简单的自定义AsyncTask可以写成如下:

    AsyncTask的工作原理
    为了分析AsyncTask的工作原理,我们从他的execute方法开始分析,execute()方法会调用executeOnExecutor方法


    从上面的代码中,sDefaultExecutor实际上是一个串行的线程池,一个进程中所有的AsyncTask全部在这个串行的线程中排队执行,这个排队执行的过程后面再进行分析。在executeOnExecutor方法中,AsyncTask的onpreExecute方法最先执行,然后线程池开始执行。

    原文链接:http://www.jianshu.com/p/685f584db344

  • 相关阅读:
    第四章 虚拟机性能监控与故障处理工具
    C++_异常5-异常规范和栈解退
    C++_异常4-将对象用作异常类型
    C++_异常3-异常机制throw try catch
    C++_异常2-返回错误码
    C++_异常1-调用abort()
    C++_类继承7-类设计回顾
    C++_类继承6-继承和动态内存分配
    C++_类继承5-抽象基类
    C++_类继承4-访问控制protected
  • 原文地址:https://www.cnblogs.com/DaisyXuRan/p/5475485.html
Copyright © 2011-2022 走看看