zoukankan      html  css  js  c++  java
  • AsyncTask

    AsyncTask

    Google 为了方便我们在子线程中更新UI,提供了AsyncTask ,背后实现原理也是基于异步消息机制。

    主要用来处理后台耗时操作,并将数据更新到主线程的一个工具类。

    AsyncTask的生命周期和它所在的Activity的生命周期是不一致的,也就是说你关闭所在Activity,AsyncTask不一定停止。

    AsyncTask是一个抽象类,如果我们想要使用它,必须创建一个子类去继承它。

    public class DownLoadAsyncTask extends AsyncTask<Void, Integer, Boolean> {
      ......
    }
    

    继承时我们需要指定三个泛型参数,这三个参数的用途为:

    1.Params: 执行AsyncTask时,需要传入的参数,

    2.Progress: 后台执行任务时的返回参数类型,也就是 publishProgress() 方法的参数类型

    3.Result: 当后台任务执行完毕后的任务,也就是 doInBackground()方法的返回值类型

    需要重写的几个方法:

    1.onPreExecute()

    这个方法在后台任务开始执行前调用,进行一些界面上的初始化操作,比如显示一个进度条对话框。

    2.doInBackground(Params ... values)

    这个方法为必须实例化的抽象方法,这个方法的所有代码都会在子线程中执行,用来处理耗时操作。

    不可以进行UI操作

    3.onProgressUpdate()

    当在后台任务中调用了 publishProgrss(Progress ..)方法时,这个方法会被调用,这个方法一般用来更新UI。

    4.onPostExecut)()

    当后台任务执行结束并通过return语句进行返回时调用,一般会进行UI操作,比如根据返回结果来提示是否操作成功。

    注意:

    AsyncTask默认使用 AsyncTask.SERIAL_EXECUTOR 执行异步线程,也就是说都是按照顺序一个个的执行。

    如果需要并行的执行多个AsyncTask对象,需要通过

    downLoadAsyncTask.executeOnExecutor( AsyncTask.THREAD_POOL_EXECUTOR);
    
    文章部分内容摘自网络和图书,如有侵权,请联系我。
  • 相关阅读:
    搭建好lamp,部署owncloud。
    部署LAMP环境搭建一个网站论坛平台
    二进制编译安装httpd服务
    安装httpd服务并配置
    FTP的应用
    Linux配置IP,安装yum源
    RHEL-server-7.0-Linux-centos安装过程
    zabbix监控某一进程
    python获取windows系统的CPU信息。
    python相关cmdb系统
  • 原文地址:https://www.cnblogs.com/-Tiger/p/7443680.html
Copyright © 2011-2022 走看看