什么是Handler?
Handler就是将消息放入队列的机制。我们在哪个线程中创新handler,handler就将消息放入所在的线程,除非在创建handler对象时是指定具体的线程。通常handler在主线程创建,handler可将消息放入主线程队列中。
当应用程序启动时,会初始化一个UI线程。UI线程中创建了Looper,所以是一个循环工作线程。创建Looper时,Looper会创建一个MessageQueue。UI线程中的Looper会不断从MessageQueue中取出消息。
handler通过发送和处理Message和Runnable对象关联相对应线程的MessageQueue
1.可以让对应的Message和Runnable在未来的某个时间点进行相应处理
2.让自己想要处理的耗时操作放在了线程,让更新ui的操作放在主线程
handler的使用方法
1.post(runnable) 可以实现延时效果 轮播图
2.sendMessage(message)
handler机制原理
handler引起的内存泄漏及解决办法
原因:静态内部类持有外部类的匿名引用,导致外部activity无法释放
解决办法:handler内部持有外部activity弱引用,并把handler改为静态内部类,mHandler.removeCallback()