Android内存泄漏(Handler造成的内存泄漏(二))

来源:互联网 发布:ai软件手机版 编辑:程序博客网 时间:2024/06/05 08:18



接着上一篇/

Handler使用方式升级版: 使用弱引用 -解决静态内部类访问外部类 


1.  修改一下我们刚才例子中的UI :在MainActity的布局文件 activity_main.xml中添加一个TextView ,并且在MainActity的oncreat找到并初始化它。

代码和效果示意如下:



2. 我们在handlerMessage中,给TextView设置值,请注意红色方框内的弱引用使用方式


我们一起来分析上面的做法:

创建一个静态Handler内部类,然后对Handler持有的外部对象使用弱引用,这样在回收时也可以回收Handler持有的对象,解决了我们内存泄漏以及访问外部对象的问题。

但是,这样子还不够完美: 我们退出MainActivity后,Looper线程的消息队列中还是可能会有待处理的消息,啥意思呢?就是我们MainActivity退出后,消息队列里还有消息,即我们的例子中,20秒后,还收到消息队列中的消息。

更完美的做法:我们应该在Activity关闭的时候,移除消息队列中的消息。



0 0
原创粉丝点击