Android Handler

Handler
1.应用程序启动的时候,在主线程会默认调用了Looper.prepare()方法,初始化Looper对象并绑定到当前线程中,并在Looper内部维护一个MessageQueue
2.接着调用handler.sendMessage()发送信息,会通过MessageQueue.enqueueMessage()向MessageQueue中添加一条消息
3.主线程调用Looper.loop()开启循环,不断轮询消息队列,通过MessageQueue.next()取出消息
4.取出的message不为空则调用msg.target.dispatchMessage()传递分发消息,目标handler收到消息后会执行handler.handlerMessage()方法处理消息
Handler内存泄漏的原因是什么?如何解决?
可以把Handler声明为静态的匿名内部类,但这样的话,在Handler内部就没办法调用到Activity中的非静态方法或变量,那么最终的解决方案可以使用静态内部类+弱引用来解决

你可能感兴趣的:(android)