android PhoneStateListener 内存泄露的问题

来源:互联网 发布:模拟加密狗软件 编辑:程序博客网 时间:2024/06/05 06:51

android PhoneStateListener 内存泄露的问题

在项目开发过程中通过ddms的堆看到内存一直持续在增长,很容易想到发生内存泄露,引用没有被释放,通过dump 最终发现是 PhoneStateListener 内部对自己有一个强引用的handler,如果是在主线程中引用的PhoneStateListener,那么他将释放不掉,引发内存泄露。 
解决方法就好的是在子线程中创建 PhoneStateListener ,其次是在PhoneStateListener中使用弱引用。比如需要activity的对象。那么就要在创建PhoneStateListener的时候将传入activity的弱引用 WeakRef ,这样就不用担心内存泄露的问题,不过这种弱引用的方式用起来简单一些,但是他还有个小问题,就是PhoneStateListener自己是释放不掉的,虽然他不再持有外部的一些引用,那么就要求不要在PhoneStateListener里面有过多的资源创建。

0 0