本文将是我对AsyncTask的学习笔记,本文大部分知识点来自liuhe688的详解Android中AsyncTask的使用
在Android中实现异步任务机制有两种方式,Handler和AsyncTask。Handler模式需要为每一个任务创建一个新的线程,任务完成后通过Handler实例向UI线程发送消息,完成界面的更新,这种方式对于整个过程的控制比较精细,但是也有缺点,例如代码相对臃肿,在多个任务同时执行,不易对线程进行精确的控制。
为了简化操作,Android1.5提供了工具类android.os.AsyncTask。它使创建异步任务变得更加简单,不再需要编写任务线程和Handler实例即可完成相同的任务
(1)AsyncTask的介绍
对Android中AsyncTask的学习_第1张图片
三种泛型类型分别为Params,Progress,Result。
Params:启动任务执行的输入参数
Progress:后台任务执行的进度
Result:后台计算结果的类型
在特定的场合下,并不是所有的类型都被使用,如果没有被使用,可以用java.lang.Void类型代替。
一个异步任的执行一般包括以下几个步骤:
1.execute(Params… params),执行一个异步任务,需要我们在代码中调用此方法,触发异步任务的执行。
2.onPreExecute(),在execute(Params… params)被调用后立即执行,一般用来在执行后台任务前对UI做一些标记。
3.doInBackground(Params… params),在onPreExecute()完成后立即执行,用于执行较为费时的操作,此方法将接收输入参数和返回计算结果。在执行过程中可以调用publishProgress(Progress… values)来更新进度信息。
4.onProgressUpdate(Progress… values),在调用publishProgress(Progress… values)时,此方法被执行,直接将进度信息更新到UI组件上。
5.onPostExecute(Result result),当后台操作结束时,此方法将会被调用,计算结果将做为参数传递到此方法中,直接将结果显示到UI组件上。
在使用的时候,有几点需要格外注意:
1.异步任务的实例必须在UI线程中创建。
2.execute(Params… params)方法必须在UI线程中调用。
3.不要手动调用onPreExecute(),doInBackground(Params… params),onProgressUpdate(Progress… values),onPostExecute(Result result)这几个方法。
4.不能在doInBackground(Params… params)中更改UI组件的信息。
5.一个任务实例只能执行一次,如果执行第二次将会抛出异常。

更多相关文章

  1. Android 中LayoutInflater(布局加载器)源码篇之createViewFromTag
  2. Android智能指针SP WP使用方法介绍
  3. android绘图Paint.setXfermode()和Canvas.saveLayer()方法的作用
  4. Android之Handler非主线程更新UI
  5. Android 之采用execSQL和rawQuery方法完成数据的添删改查操作
  6. Android中的多进程、多线程
  7. Android ListView 滚动的N种方法
  8. Android解决输入法自动弹出方法大全

随机推荐

  1. 面试前必须要知道的Redis面试题
  2. 策略模式原来就这么简单!
  3. Docker入门为什么可以这么简单?
  4. JAVA中的“抽象接口”
  5. 三分钟学会门面模式!
  6. 海康网络摄像机SDK Linux对接
  7. 2018再见,2019你好
  8. 国外版《从入门到放弃》大全,脑洞无极限!
  9. 使用Python开发鸿蒙应用--2021.01.07直播
  10. SpringBoot自动配置原理!