AsyncTask

AsyncTask是Android提供的一个助手类,它对Thread和Handler进行了封装,方便我们使用。Android之所以提供AsyncTask这个类,就是为了方便我们在后台线程中执行操作,然后将结果发送给主线程,从而在主线程中进行UI更新等操作。在使用AsyncTask时,我们无需关注Thread和Handler,AsyncTask内部会对其进行管理,这样我们就只需要关注于我们的业务逻辑即可。


AsyncTask有三个模板函数:

    1、Params:传递给后台任务的参数类型。

    2、Progress:后台计算执行过程中,进度的单位类型。

    3、Result:后台执行返回的结果的类型。


具体写法:

public class DownloadTask extends AsyncTask<Void,Integer,Boolean>{

当不需要传递参数的时候就写成void


AsyncTask需要重写5个方法,分别是:

    1、onPreExecute方法:准备运行,该回调函数在任务被执行之后立即由UI线程调用,一般可以显示进度条。它会运行在doInBackground方法之前,相当于初始化。

这里写图片描述 
该方法有MainThread注解,表示该方法是运行在主线程中的。


    2、doInBackground(Params ...)方法:正在后台运行,通常在这里执行耗时的后台计算,计算结果返回给函数,这里如果AsyncTask的第三个参数是Void的话不需要返回,这里不能更新UI,但是可以调用publishProgress(Progress ...)方法完成。

这里写图片描述 
该方法有WorkerThread注解,表示该方法是运行在单独的工作线程中的,而不是运行在主线程中。doInBackground会在onPreExecute()方法执行完成后立即执行


    3、onProgressUpdate(Progress ...)方法:进度更新,UI线程在publishProgress(Progress ...)方法调用完成后被调用,一般动态显示一个进度。

这里写图片描述 
该方法也具有MainThread注解,表示该方法是在主线程上被调用的


    4、onPostExecute(Result)方法:

这里写图片描述 
该方法也具有MainThread注解,表示该方法是在主线程中被调用的。当doInBackgroud方法执行完毕后,就表示任务完成了,doInBackgroud方法的返回值就会作为参数在主线程中传入到onPostExecute方法中,这样就可以在主线程中根据任务的执行结果更新UI。


    5、onCancelled方法:取消任务,在调用AsyncTask的cancel()方法的时候调用。


调用方法:

new DownloadTask().execute();
如果 Params不为void则在方法中传入对应的参数


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值