简而言之,每个Thread里面有Looper(通过prepare初始化,通过loop进入死循环)。每个handler将自己的msg放入looper死循环里面,然后looper循环检测消息再发送回给handler。
*内存泄漏问题;这里需要注意一个内存泄漏问题,就是当activity退出的时候会出现内存泄漏(因为looper 还在循环啊)。所以说在退出activity的时候需要退出looper。
还有一个办法把handler设置为static(不过退出activity的时候还是要结束looper节省资源),但是这时候activity的非static没法用了。所以这个时候应该使用weakreference来弱引用activity。
最后简单说一下HandlerThread 和 Handler的区别了。
其实。。。也很简单。handlerThread嘛,就是handler、looper、和Thead的结合,方便开发而已。