您当前的位置: 首页 >  android

命运之手

暂无认证

  • 1浏览

    0关注

    747博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

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

命运之手 发布时间:2018-03-18 16:10:17 ,浏览量:1

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执行完一个消息,才会继续取下一个消息,所以不同消息是按发送顺序串行执行的

关注
打赏
1654938663
查看更多评论
立即登录/注册

微信扫码登录

0.0417s