Android开发与实践课件第16章线程与消息处理.pptVIP

Android开发与实践课件第16章线程与消息处理.ppt

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
(2)在MainActivity的onCreate()方法中,创建一个LooperThread线程,并开启该线程,关键代码如下: LooperThread thread=new LooperThread(); //创建一个线程 thread.start(); //开启线程 运行本实例,在日志面板(LogCat)中输出如图16-3所示的内容。 图16-3 在日志面板(LogCat)中输出的内容 Looper类提供的常用方法如表16-1所示。 表16-1 Looper类提供的常用方法 方 法 描 述 ? prepare() 用于初始化Looper ? loop() 调用loop()方法后,Looper线程就开始真正工作了,它会从消息队列里获取消息和处理消息 ? myLooper() 可以获取当前线程的Looper对象 ? getThread() 用于获取Looper对象所属的线程 ? quit() 用于结束Looper循环 ? 注意: 写在Looper.loop()之后的代码不会被执行,这个函数内部是一个循环,当调用Handler.getLooper().quit()方法后,loop()方法才会中止,其后面的代码才能得以运行。 16.2.2 消息处理类Handler简介 消息处理类(Handler)允许发送和处理Message或Rannable对象到其所在线程的MessageQueue中。Handler有以下两个主要作用: (1)将Message或Runnable应用post()方法或sendMessage()方法发送到Message Queue中,在发送时可以指定延迟时间、发送时间或者要携带的Bundle数据。当MessageQueue循环到该Message时,调用相应的Handler对象的handlerMessage()方法对其进行处理。 (2)在子线程中与主线程进行通信,也就是在工作线程中与UI线程进行通信。 说明: 在一个线程中,只能一个Looper和MessageQueue,但是,可以有多个Handler,而且这些Handler可以共享同一个Looper和MessageQueue。 Handler类提供的常用的发送和处理消息的方法如表16-2所示。 表16-2 Handler类提供的常用方法 方 法 描 述 handleMessage(Message msg) 处理消息的方法。通常重写该方法来处理消息,在发送消息时,该方法会自动回调 post(Runnable r) 立即发送Runnable对象,该Runnable对象最后将被封装成Message对象 postAtTime(Runnable r, long uptimeMillis) 定时发送Runnable对象,该Runnable对象最后将被封装成Message对象 postDelayed(Runnable r, long delayMillis) 延迟多少毫秒发送Runnable对象,该Runnable对象最后将被封装成Message对象 sendEmptyMessage(int what) 发送空消息 sendMessage(Message msg) 立即发送消息 sendMessageAtTime(Message msg, long uptimeMillis) 定时发送消息 sendMessageDelayed(Message msg, long delayMillis) 延迟多少毫秒发送消息 16.2.3 消息类Message简介 消息类(Message)被存放在MessageQueue中,一个MessageQueue中可以包含多个Message对象。每个Message对象可以通过Message.obtain()方法或者Handler.obtainMessage()方法获得。一个Message对象具有如表16-3所示的5个属性。 表16-3 Message类的属性 说明: 使用Message类的属性可以携带int型和数据,如果要携带其他类型的数据,可以先将要携带的数据保存到Bundle对象中,然后通过Message类的setDate()方法将其添加到Message中。 属 性 类 型 描 述 ? arg1 int 用来存放整型数据 ? arg2 int 用来存放整型数据 ? obj Object 用来存放发送给接收器的Object类型的任意对象 ? replyTo Messenger 用来指定此Message发送到何处的可选Messager对象 ? what int 用于指定用户自定义的消息代码,这样接收者可以了解这个消息的信息 ? 综上所述,Message类的使用方

文档评论(0)

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

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

1亿VIP精品文档

相关文档