网站大量收购独家精品文档,联系QQ:2885784924

Android开发中多线程与UI更新.docVIP

  1. 1、本文档共5页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
Android开发中多线程与UI更新.doc

Android开发中多线程与UI更新   摘 要:在移动互联网时代,智能手机已经成为我们生活中必不可少的东西,在智能手机市场中,Android操作系统统治了大半边江山,各行各业的App也随之兴起,也因此,对App开发要求也不断提高。多线程,它帮助开发者在自己开发的App中提高用户体验,在开发中起着关键性作用。   关键词:主线程 子线程 Thread Handler AsyncTask   中图分类号:TP316 文献标识码:A 文章编号:1003-9082(2014)04-0019-01   一、引言   自从2008年10月,Google发布第一步手机,至2014年,短短的5年多的时间,Android就在占据了智能手机OS市场的80%。作为一名Android开发者,在开发Android应用的时候,多线程技术是我们必须使用的一项关键技术,它直接影响着应用的用户体验。   二、主线程   1.什么是主线程   Android中的主线程,也叫UI(User Interface,用户界面)线程。当我们开始启动应用时,就会打开一个主线程,这个主线程主要的工作是负责绘图及其事件的响应,比如:界面中各个按钮的呈现和点击它所响应的动作等等。   2.主线程是线程不安全的   Android中的主线程是线程不安全的,并且更新主线程中的UI控件,必须是在主线程中更新。因为,在一个应用中,子线程是可能有好几个,如果这些子线程都同时操作一个UI控件,那么就会引起冲突,而且在子线程中操作UI控件,应用中就会报错。   3.主线程不能执行费时的任务   不仅仅是Android中,其他任何一个应用程序,都不应该把费时的任务放在主线程中去执行,比如:网络请求,操作数据库和输入输出数据等等。这样就引起了堵塞,严重的影响了用户的体验,给用户造成了等待。在Android中,如果在主线程中被堵塞超过5S,系统就会弹出应用程序没有响应的提示。所以,在主线程中操作的任务,时间是越短越好。   三、子线程   Android中的子线程,用来执行一些费时的操作,并且通知主线程需要更新UI(但绝不能在子线程中更新UI,原因在上面已经说明)等等。   四、Android中多线程与更新UI的方法   1.Thread+Activity.runOnUiThread(Runnable)方法   Thread执行多线程是Java中老生常谈的,在这里不作说明。   Activity.runOnUiThread(Runnable)是Activity的内部方法,用于更新UI控件,在使用的时候需要指明它是哪一个Activity调用,参数为一个Runuable接口。   它的使用方法很简单,如:   Activity.this. runOnUiThread(new Runnable() {   @Override   public void run() {   //操作UI控件的代码。   }   });   2.Thread+View.post(Runnable)和Thread+View.postDelay(Runna   ble , long)方法   这里的View代表当前你需要更新的那个View对象。以上两种方法是相同的,只是后者比前者多了一个long型的时间,代表经历多少毫秒之后执行该方法。   若有一个button对象,使用方法:   button.post(new Runnable(){   @Override   public void run() {   //操作UI控件的代码。   }   });   View.post(Runnable,long)方法的使用类似。   3.Hanlder   Handler在Android开发中主要用于线程信息的传递,经常配合着Thread使用,当开始费时操作时,开启一个子线程,子线程操作完成时,需要更新UI控件,通常就会使用Handler去通知主线程,然后更新UI控件。   它主要有两个作用:(1)向消息队列发送数据;(2)处理分发的Message。   关于Handler还有很多的知识,读者自行学习。   4. AsyncTask   AsyncTask是一个方便编写后台线程与UI线程交互的辅助类。它在使用的使用分为5个步骤。   4.1准备运行阶段:onPreExecute()函数,该回调函数在任务被执行之后立即由UI线程调用。这个步骤通常用来初始化任务,比如在用户接口(UI)上显示进度条。   4.2后台运行阶段:doInBackground(Params...),该回调函数由后台线程在第一个阶段执行结束后立即调用。通常在这里执行耗时

您可能关注的文档

文档评论(0)

yingzhiguo + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

版权声明书
用户编号:5243141323000000

1亿VIP精品文档

相关文档