美文网首页源码原理知识点
使用WeakReference来解决Handler带来的内存泄漏

使用WeakReference来解决Handler带来的内存泄漏

作者: wervy | 来源:发表于2019-12-03 16:44 被阅读0次

        我们在项目项目中使用Handler是为了更新ui,我们在主线程中创建Handler对象,在子线程中处理一些耗时操作,handler通过发送message或者post(runnable)的方式,让主线程更新ui。

        因为子线程中是一个耗时操作,比如在访问网络请求的过程中,我把该Activity关闭了,但是这时候Handler仍然存有该该页面的引用。这样就导致该activity无法被回收,就会造成内存泄漏。

    解决方法之一就是把Handler改成持有该Activity的弱引用,并把类声明为static,静态类不持有外部类的对象,所以你的Activity可以随意被回收

    代码如下:

    我们进入WeakReference的源码,看看WeakReference的描述信息

    翻译过来也就是弱引用不会阻止引用对象被终止或是回收

    还有我们在MVP的架构项目中,在P成也会用到WeakReference,实例如下

    相关文章

      网友评论

        本文标题:使用WeakReference来解决Handler带来的内存泄漏

        本文链接:https://www.haomeiwen.com/subject/lbocgctx.html