探究服务(二)--AsyncTask

为了方便我们在子线程中对UI进行操作,Android提供了AsyncTask来帮助我们。AsyncTask背后的实现原理也是基于异步消息处理机制。

AsyncTask基本用法

AsyncTask是一个抽象类,我们必须创建一个子类去继承它。在继承时我们制定三个泛型参数。
Params 执行AsyncTask时需要传入的参数,可用于后台服务。

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

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

这里表示在执行AsyncTask时不传入参数,显示的进度单位为Integer,任务执行完毕后返回Boolean类型。

我们需要重写AsyncTask中的几个方法才可以完成对任务的定制,一般需要重写的方法有四种。

1,onPreExecute() 在后台任务开始执行之前调用,用于进行一些界面的初始化操作。
2,doInBackground(Params…) 这个方法中的代码运行在子线程当中,我们自然要在这里处理耗时操作,任务完成后通过Return语句返回执行结果。在这个方法里面我们不可以进行UI操作,如果我们需要进行UI操作的话,我们可以通过publishProgress(Progress…)来完成。
3,onProgressUpdate(Progress…) 当我们在doInBackground(Params…)方法里面执行了publishProgress(Progress…)语句后,那么onProgressUpdate(Progress…)很快就会被执行,该方法携带的参数就是从后台任务中传递过来的。在这个方法里面,我们可以进行UI操作,利用参数中的数值就可以对界面元素进行相应的更新。
4,onPostExecute(Result) 当后台任务执行结束并通过Return语句返回后,这个方法就会被调用,同样可以利用返回的数据来进行一些UI操作,比如提醒任务执行的结果或者关闭进度条等等。

AsyncTask总结

使用AsyncTask,在doInBackground()方法里面执行耗时操作,在onProgressUpdate()方法里面进行UI操作,在onPostExecute()方法里面执行任务的收尾工作。

AsyncTask的任务的启动

启动这个任务,我们只需要添加如下代码:

newDownloadTask().execute();

以上就是AsyncTask的基本用法,我们并不需要考虑异步消息处理机制,也不用创建Handler对象来处理消息,只需要调用publishProgress()方法,就可以实现从子线程切换到主线程。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值