探究服务(二)--AsyncTask
来源:互联网 发布:淘宝店掌柜名怎么修改 编辑:程序博客网 时间:2024/06/04 00:42
为了方便我们在子线程中对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()方法,就可以实现从子线程切换到主线程。
- 探究服务(二)--AsyncTask
- AsyncTask探究
- 后台劳动者--探究服务
- Android源码探究之AsyncTask 源码解析
- 多线程--异步任务AsyncTask由浅入深探究
- Annotation 探究 (二)
- 探究javascript mvc(二)
- retrofit框架探究(二)
- Android之AsyncTask(二)
- AsyncTask异步二
- AsyncTask(二)
- AsyncTask必知必会(二)
- AsyncTask入门(二)
- AsyncTask 坑 (二) AsyncTask对象生命周期
- AsyncTask专题之二 AsyncTask基础
- 后台服务AsyncTask的使用
- RunLoop深度探究(二)
- 热修复探究(二)
- 虚析构函数
- HDFS高可用(HA)配置
- js中的预解析与变量名提升问题
- BDF编译-ga库动态链接问题
- 镜像同步Android源代码
- 探究服务(二)--AsyncTask
- 设计模式之简单工厂模式
- 《21天实战caffe》 读书笔记(六)
- 虚函数
- vue组件
- HDU 1241 Oil Deposits【深搜练习】
- 文章标题
- UVa 202 Repeating Decimals 循环节
- 关于位运算(转需)