Handler笔记
5.Handler内存泄露
在一个Activity里面,如果没有静态地创建一个Handler,有可能导致内存泄露。
因为Hander和Looper绑定,如果looper的MessageQueue有消息没处理完,则Looper还引用着Handler,而Handler引用着Activity,导致Activity不能被回收,出现内存泄露。(要等到Looper处理完MessageQueue的消息,Handler才能被回收)
如果要使用到Activity的成员变量,要声明成WeakReference再传给Handler
1.一个线程可以有多个Handler
2.一个线程只有一个Looper,和一个消息队列MessageQueue
3.如果没有指定,Handler在哪个线程创建,就用哪个线程的Looper
4.除了主线程,其他的线程都需要先调用Looper.prepare()方法,创建Looper,再用looper.loop()方法遍历消息队列处理消息,如果没有队列里没消息,则会阻塞