学习笔记之Android Handler

Handler机制
一,Handler概述:
Handler是Android提供的一套线程通讯机制。因为子线程直接操作UI线程不安全,当其他线程需要操作UI线程时,将这些操作信息封装成Message,传递到UI线程,再由Handler处理。
Handler用于在同一进程不同线程间通信

Message:代表一个行为或一串动作(Runnable线程),每个消息在被传入队列时都有一个明确的目标Handler
Handler:消息的发送者和处理者
MessageQueue:循环队列,负责存储消息
Looper: 负责将消息从队列中去除并交给对应的Handler处理,每个线程只有一个Looper,UI线程自动创建,其他线程需要手动创建并开启,内部是一个无线循环从Queue里面取消息,如果Queue为空则return退出循环(一般不会由此退出)
Looper.prepare() //创建
Looper.loop() //开启循环
在这里插入图片描述

二,Handler原理:
而且双方线程都是可以直接访问共享区域,不需要将数据拷贝一份发送,只需要使用Linux管道机制进行通讯,通知一下对面有数据,你去拿然后处理就行了
二,注意事项:
1,由于Message持有Handler,而Handler又持有Activity,所以当消息还没处理完就关闭Activity时,会导致Activity因还有强引用而清理不掉,导致内存泄露
解决方法是将Activity中的Handler定义为静态,然后在该Handler中持有Activity的弱引用。
2,Message的复用,频繁创建和清理Message会造成内存抖动,因此Message被设计成可复用的,方法是使用以下两个方法获取消息:
Message.obtain()
Handler对象.obtainMessage()
3,发送接受消息的一般是同一个Handler,发送时会把Message的target属性赋值为发送此消息的Handler对象,分发消息时由此找到对应的Handler处理

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值