线程间通信之Handler
2015-11-08 20:05
218 查看
Handler消息机制
使用Handler在主线程和子线程之间传递消息的机制,就是通过Handler获取主线程的消息队列,将子线程的消息发送到主线程的消息队列,由Looper取出后交给目标Handler处理。Looper
首先主线程会初始化时调用Looper.prepare()创建主线程的Looper,创建的Looper对象持有一个消息队列引用MessageQueue,Looper无限轮询消息队列MessageQueue中的消息,并且将消息分发给各个目标Handler处理。这里需要注意的是,Looper是在主线程中默认创建,所以如果在子线程中创建Handler就获取不到Looper引用,需要手动prepare创建。Handler
创建Handler时会获取当前线程的一个Looper,Looper在这个线程里轮询它的消息队列,Handler中的handleMessage方法是Looper来调用的。Message
我们可以调用sendMessage()、postDelayed()等方法,实现了线程间Message的传递。Message会相应地持有Handler(target)、Runnable(callback)引用,其中target用于轮询时分发消息,而callback则使Runnable的run()方法可以在Looper所在线程执行。
相关文章推荐
- C语言学习字符串和指针
- 错综忙乱的大千世界
- HDU 4574Bombs
- leetcode刷题,总结,记录,备忘300
- 安装maven
- eclipse 自定义注释模板
- MySQL学习笔记(5)之数据定义类型
- 给电影表和模型添加新字段
- android 页面转换所遇的问题——you nedd use a Theme.AppCompat theme
- Android控件之自定义EditText
- Light OJ 1294 - Positive Negative Sign 【规律 水题】
- 信息安全系统设计基础第九周学习总结
- 学习lofter 让图片适应各个分辨率的方法
- Android分享功能
- 数据库管理
- IOS UISwitch 感觉官方提供的拓展性不够好,老感觉这个东西项目中用到需要自己定制
- DevExpress GridControl使用方法总结
- delphi frame 重载onshow
- UITableView 滑动自动加载更多数据
- Python通用网络爬虫脚本