没有合适的资源?快使用搜索试试~ 我知道了~
android:AsyncTask实现异步处理任务.pdf
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 53 浏览量
2021-11-17
18:46:45
上传
评论
收藏 9KB PDF 举报
温馨提示
试读
5页
android:AsyncTask实现异步处理任务.pdf
资源推荐
资源详情
资源评论
在开发 Android 应用时必须遵守单线程模型的原则: Android UI 操作并不是线程安全的并
且这些操作必须在 UI 线程中执行。在单线程模型中始终要记住两条法则:
1. 不要阻塞 UI 线程
2. 确保只在 UI 线程中访问 Android UI 工具包
当一个程序第一次启动时, Android 会同时启动一个对应的主线程 (Main Thread) ,主线程
主要负责处理与 UI 相关的事件,如:用户的按键事件,用户接触屏幕的事件以及屏幕绘图
事件,并把相关的事件分发到对应的组件进行处理。所以主线程通常又被叫做 UI 线程。
比如说从网上获取一个网页,在一个 TextView 中将其源代码显示出来,这种涉及到网络
操作的程序一般都是需要开一个线程完成网络访问, 但是在获得页面源码后, 是不能直接在
网络操作线程中调用 TextView.setText() 的.因为其他线程中是不能直接访问主 UI 线程成员
android 提供了几种在其他线程中访问 UI 线程的方法。
Activity.runOnUiThread( Runnable )
View.post( Runnable )
View.postDelayed( Runnable, long )
Hanlder
这些类或方法同样会使你的代码很复杂很难理解。 然而当你需要实现一些很复杂的操作并需
要频繁地更新 UI 时这会变得更糟糕。
为了解决这个问题, Android 1.5 提供了一个工具类: AsyncTask,它使创建需要与用户界面
交互的长时间运行的任务变得更简单。不需要借助线程和 Handler 即可实现。
AsyncTask 是抽象类 .AsyncTask 定义了三种泛型类型 Params,Progress 和 Result。
Params 启动任务执行的输入参数,比如 HTTP 请求的 URL 。
Progress 后台任务执行的百分比。
Result 后台执行任务最终返回的结果,比如 String。
AsyncTask 的执行分为四个步骤,每一步都对应一个回调方法,这些方法不应该由应用程序
调用,开发者需要做的就是实现这些方法。
1) 子类化 AsyncTask
2) 实现 AsyncTask 中定义的下面一个或几个方法
onPreExecute(), 该方法将在执行实际的后台操作前被 UI thread 调用。可以在该方法
中做一些准备工作,如在界面上显示一个进度条。
doInBackground(Params...), 将在 onPreExecute 方法执行后马上执行, 该方法运行在后
台线程中。这里将主要负责执行那些很耗时的后台计算工作。可以调用 publishProgress 方
法来更新实时的任务进度。该方法是抽象方法,子类必须实现。
onProgressUpdate(Progress...),在 publishProgress 方法被调用后, UI thread 将调用这个
方法从而在界面上展示任务的进展情况,例如通过一个进度条进行展示。
onPostExecute(Result), 在 doInBackground 执行完成后, onPostExecute 方法将被 UI
thread 调用,后台的计算结果将通过该方法传递到 UI thread.
为了正确的使用 AsyncTask 类,以下是几条必须遵守的准则:
1) Task 的实例必须在 UI thread 中创建
2) execute 方法必须在 UI thread 中调用
资源评论
sinat_40572875
- 粉丝: 52
- 资源: 7万+
下载权益
C知道特权
VIP文章
课程特权
开通VIP
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功