当前位置: 首页 > 工具软件 > AsynTask > 使用案例 >

AsynTask异步任务的使用(再也忘不了了)

樊杰
2023-12-01

AsynTask封装了子线程,可以直接用来处理耗时操作。

AsyncTask<Params,Progress,Result>是个抽象类,使用时需要继承这个类,然后调用execute()方法。

使用三板斧:
1创建AsyncTask的子类,并为三个范型Params,Progress,Result(巧记:启动任务,任务执行中,任务执行完)指定类型。不需要指定置为void。
2根据需要实现下列方法,其中doInBackground(Params...)必须实现
onPreExecute() doInBackground() onProgressUpdate() onPostExecute()[doInBackground()执行完之后自动执行onPostExecute(),并将 doInBackground()的返回值返回该方法]
3调用子类实例的execute()执行耗时操作
注意:必须在主线程中创建AsyncTask实例并调用execute() 
解释:

注意继承时需要设定三个参数Params,Progress和Result的范型,如AsyncTask<Void,Inetger,Void>:

  • Params是指启动任务执行execute()传入的参数类型和doInBackgound()时传入的参数类型
  • Progress是指更新进度时传递的参数类型,即publishProgress()和onProgressUpdate()的参数类型
  • Result是指doInBackground()的返回值类型

用一个进度条显示下载一幅图片为例形象的说明使用的方法:


  • doPreExecute()负责在下载开始之前显示一个进度条
  • doInBackground() 在后台运行,处理耗时操作,必须要实现的方法,完成实际的下载;在此方法中可以调用publishProgress() 更新进度,给onProgressUpdate()传递进度参数
  • onProgressUpdate() 更新进度,在publishProgress()调用之后被调用,负责随着下载进度的改变更新进度条的进度值。
  • onPostExecute()负责下载完成后将下载的内容显示出来


 类似资料: