- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
使用默认的构造方法Handler h = new Handler();实例化的时候,系统默认将该Handler的Looper对象和MessageQueue关联到Handler所在的线程。若加入到非UI线程,并且没有调用Looper的prepare()方法,那么就会throw new RuntimeException(Cant create handler inside thread that has not called Looper.prepare())的异常,意思是在没有调用Looper.prepare()的线程不能实例化Handler对象。这是因为不调用Looper.prepare(),Handler就不能实现消息机制的整个过程。 使用Handler可以让耗时的任务在非UI线程中执行,只要用Handler发送消息去更新UI即可。 10.2.3 handle的具体使用场合 前面讲到用Handler来进行异步消息的处理和耗时任务的操作,但是使用Handler的过程较为复杂,若其服务的对象不是频繁使用Handler对象来处理任务和消息,那么使用Handler就有点复杂了。所以,Android 系统中还为开发者提供了一个异步处理消息的任务类AsyncTask,它是一个轻量级的异步任务处理类。 10.2.4 AsyncTask的介绍 使用AsyncTask来处理任务很简单,遵循以下3个步骤: (1)创建一个类继承自AsyncTask; (2)复写doInBackgoround()方法,在该方法中写后台执行任务的代码; (3)在UI Thread中创建实例并调用execute()方法,传入执行任务过程中要使用的参数,就是doInBackground(Param ... param)的参数。 注意:在onPreExecute(),onPostExecute()可以访问UI 组件,doInBackgroud()中不能访问UI组件。 下面给出的案例是本书综合案例中话题模块通过AsyncTask来读取服务端的话题数据: 项目名:com.androidbook.client 案例:通过AsyncTask类异步下载和处理从服务端得到的话题数据 源代码位置:com.androidbook.client.activity.broadcast.BroadCastActivity 10.2.5 AsyncTask的使用 public class ReadTask extends AsyncTaskRequestParam, Integer, Integer{ ProgressDialog dialog; // 任务执行前执行该方法,可以访问UI组件 @Override protected void onPreExecute() { dialog = ProgressDialog.show(BroadCastActivity.this, , getText(R.string.waiting)); super.onPreExecute(); } // 后台执行任务,不可执行任何与UI相关的操作 @Override protected Integer doInBackground(RequestParam... params) { 10.2.5 AsyncTask的使用 //省略... return 0; } // 任务执行完成后调用,可使用UI组件 @Override protected void onPostExecute(Integer result) { dialog.dismiss(); //省略... super.onPostExecute(result); } 10.2.5 AsyncTask的使用 * * * * Android 移动应用设计与开发 10.1 进程与线程 10.1.1 什么是进程? 10.1.2 进程模型 10.1.3 Android中进程的生命周期 10.1.4 Android进程间的通信 10.1.5 什么是线程? 10.1.6 Android的线程模型 10.1.7 进程与线程 10.1.8 进程与线程的重要性 10.2 Handler和AsynTask 10.2.1 Handler的基本概念 10.2.2 Android消息机制 10.2.3 Handler的具体使用场合 10.2.4 AsyncTask的介绍 10.
您可能关注的文档
- AutoCAD 2010实训教程第六章 尺寸引线及公差.ppt
- AutoCAD 2010实训教程第九章 实训练习.ppt
- AutoCAD 2010实训教程第二章 绘图流程.ppt
- AutoCAD 2010实训教程第八章 打印和输出.ppt
- AutoCAD 2010计算机辅助设计立体化教程第14章.ppt
- AutoCAD 2010计算机辅助设计立体化教程第13章.ppt
- AutoCAD 2010计算机辅助设计立体化教程第12章.ppt
- AutoCAD 2010计算机辅助设计立体化教程第11章.ppt
- AutoCAD 2010计算机辅助设计立体化教程第10章.ppt
- AutoCAD 2010计算机辅助设计立体化教程第9章.ppt
文档评论(0)