Android学习笔记(39):异步任务AsyncTask
2016-04-17 03:07
387 查看
异步任务是为了在新线程中修改UI组件而提供的,当然为了解决这个问题我们还可以用Handler实现线程之间的通信。但异步任务为我们提供了一种进一步简化的方式。
使用AsyncTask的步骤如下:
1.在UI线程中创建AsyncTask的子类(必须在UI线程中创建),指定三个泛型参数:不需要的可以指定为Void
Params:启动任务执行的输入参数的类型。
Progress:后台任务完成的进度值的类型。
Result:后台任务完成后返回结果的类型。
2.实现AsyncTask的如下方法(这些方法都是Android系统负责调用的,不需要程序员去调用):
doInBackground(Params... params):是后台线程需要完成的任务。在onPreExecute后执行。此方法将接收输入参数和返回计算结果。在执行过程中可以调用publishProgress(Progress...
values)来更新进度信息。
onProgressUpdate(Progress... values):在调用publishProgress(Progress... values)时,此方法被执行,直接将进度信息更新到UI组件上。
onPreExecute():在执行后台线程的任务前调用。一般用于完成一些初始化操作。
onPostExecute(Result result):在执行后台线程的任务后调用。在doInBackground后执行。
3.调用AsyncTask子类的execute()方法开始执行后台任务。(必须在UI线程中调用)
需要注意的是AsyncTask只能调用一次,多次调用会抛出异常。
使用AsyncTask的步骤如下:
1.在UI线程中创建AsyncTask的子类(必须在UI线程中创建),指定三个泛型参数:不需要的可以指定为Void
Params:启动任务执行的输入参数的类型。
Progress:后台任务完成的进度值的类型。
Result:后台任务完成后返回结果的类型。
2.实现AsyncTask的如下方法(这些方法都是Android系统负责调用的,不需要程序员去调用):
doInBackground(Params... params):是后台线程需要完成的任务。在onPreExecute后执行。此方法将接收输入参数和返回计算结果。在执行过程中可以调用publishProgress(Progress...
values)来更新进度信息。
onProgressUpdate(Progress... values):在调用publishProgress(Progress... values)时,此方法被执行,直接将进度信息更新到UI组件上。
onPreExecute():在执行后台线程的任务前调用。一般用于完成一些初始化操作。
onPostExecute(Result result):在执行后台线程的任务后调用。在doInBackground后执行。
3.调用AsyncTask子类的execute()方法开始执行后台任务。(必须在UI线程中调用)
需要注意的是AsyncTask只能调用一次,多次调用会抛出异常。
相关文章推荐
- Android学习笔记(38):Handler消息传递处理机制
- Android Studio gradle总结
- AsyncTask的缺陷和问题
- Android学习笔记(37):用Configuration类获取和监听设备信息
- Android Animation (动画设计)
- Android学习--broadcast intent
- Android中使用Intent实现界面跳转
- android:Widget.Material.Button.Colored找不到
- Android-->圆角图片,圆角任意View,圆角父布局Layout(任意形状的View且超简洁实现)
- Android固件加载出错(load failed with error -2)
- Android学习笔记(36):Android的两种事件处理方式
- 内容观察者
- Android系统性能演变历程
- [android] 手机卫士设备管理权限锁屏
- Unsupported major.minor version 52.0
- 属性动画
- 补间动画
- Android-Activity劫持
- Android 按钮 Button和ImageButton
- Android练习项目 Mp3播放器实现(一)