您的位置:首页 > 产品设计 > UI/UE

【Android】【异步消息处理机制】Message,MessageQueue,Looper,Handler

2018-03-18 16:10 579 查看
Message,MessageQueue,Looper,Handler

Message封装消息标识和消息处理需要的参数

MessageQueue用于存储多个消息,保证消息可以按顺序串行执行

Looper用于从MessageQueue中取出消息,然后交给Handler处理

Handler用于发送消息和处理消息

Looper通过Looper.prepare方法来创建,通过Looper.loop来启动,通过Looper.quit来停止

Looper.loop是个阻塞方法,这个方法会一直循环取消息,然后交给Handler处理,只有Looper.quit被调用后才会停止

Looper在哪个线程创建的,就属于哪个线程

一个线程最多只能有一个Looper,可以通过Looper.myLooper获取当前线程的Looper

手动创建的Looper,在Activity销毁前,一定要调用Looper.quit来停止,否则会一直循环取消息

主线程默认就已经创建了一个MainLooper,可以通过Looper.getMainLooper获得,不需要再通过Looper.prepare来创建

主线程的所有任务,都是执行在MainLooper.loop方法的循环之中的,所以从loop方法内部来看,是永不阻塞的

Android系统是由事件来驱动的,loop方法不断取消息来处理,当主线程的MainLooper.loop退出了,APP也就结束了

Handler对应着一个Looper,一个Looper可以负责多个Handler

Handler在new的时候就会绑定Looper,如果没有指定,默认绑定当前线程的Looper

Handler对应的Looper属于哪个线程,Handler的消息处理就在哪个线程里执行

Handler执行完一个消息,才会继续取下一个消息,所以不同消息是按发送顺序串行执行的
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐