handler介绍.pdfVIP

  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文档。上传文档
查看更多
handler介绍

一、Handler 的定义: 主要接受子线程发送的数据, 并用此数据配合主线程更新UI. 解释: 当应用程序启动时,Android 首先会开启一个主线程 (也就是UI 线程) , 主线 程为管理界面中的 UI 控件,进行事件分发, 比如说, 你要是点击一个 Button ,Android 会分 发事件到 Button 上,来响应你的操作。如果此时需要一个耗时的操作,例如: 联网读取数 据, 或者读取本地较大的一个文件的时候,你不能把这些操作放在主线程中,如果你放在 主线程中的话,界面会出现假死现象, 如果5 秒钟还没有完成的话,会收到Android 系统的 一个错误提示 强制关闭. 这个时候我们需要把这些耗时的操作,放在一个子线程中, 因为 子线程涉及到 UI 更新,Android 主线程是线程不安全的,也就是说,更新UI 只能在主线程 中更新,子线程中操作是危险的. 这个时候,Handler 就出现了,来解决这个复杂的问题 , 由 于Handler 运行在主线程中(UI 线程中), 它与子线程可以通过Message 对象来传递数据, 这 个时候,Handler 就承担着接受子线程传过来的(子线程用sedMessage()方法传弟)Message 对 象,(里面包含数据) , 把这些消息放入主线程队列中,配合主线程进行更新UI。 二、Handler 一些特点 handler 可以分发Message 对象和Runnable 对象到主线程中, 每个Handler 实例,都会 绑定到创建他的线程中(一般是位于主线程), 它有两个作用: (1): 安排消息或 Runnable 在某个主线程中某个地方执行, (2)安排一 个动作在不同的线程中执行 Handler 中分发消息的一些方法 post(Runnable) postAtTime(Runnable,long) postDelayed(Runnable long) sendEmptyMessage(int) sendMessage(Message) sendMessageAtTime(Message,long) sendMessageDelayed(Message,long) 以上post 类方法允许你排列一个Runnable 对象到主线程队列中, sendMessage 类方法, 允许你安排一个带数据的Message 对象到队列中,等待更新. 三、Handler 实例 (1) 子类需要继承Hendler 类,并重写handleMessage(Message msg) 方法, 用于接受线 程数据 以下为一个实例,它实现的功能为 : 通过线程修改界面Button 的内容 1. public class MyHandlerActivity extends Activity { 2. Button button; 3. MyHandler myHandler; 4. 5. protected void onCreate(Bundle savedInstanceState) { 6. super.onCreate(savedInstanceState); 7. setContentView(R.layout.handlertest); 8. 9. button = (Button) findViewById(R.id.button); 10. myHandler = new MyHandler(); 11. // 当创建一个新的 Handler 实例时, 它会绑定到当前线程和消息的队列中,开 始分发数据 12. // Handler 有两个作用, (1) : 定时执行Message 和Runnalbe

文档评论(0)

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

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

版权声明书
用户编号:7014141164000003

1亿VIP精品文档

相关文档