您的位置:首页 > 移动开发 > Android开发

Android InputMethodManager 导致的内存泄露及解决方案

2017-07-22 13:11 1106 查看
今天在使用LeakCanary检查应用的内存泄露时,报了一个这样的错误,并且还给出了参考链接,原来这是Android输入法的一个bug,在SDK_INT < KITKAT || SDK_INT > 23中都存在。



LeakCanary之所以能够显示参考链接是因为它有一个针对SDK已知内存泄露的列表,放在AndroidExcludedRefs.java[/i]中,比如输入法的这个。



这个问题很多人都遇到过,网上已经有比较成熟的方案,分析原因比较透彻的是这篇文章:[Android][Memory Leak] InputMethodManager内存泄露现象及解决[/i],改善方案可以参考Leaknary给出的方案:InputMethodManager内存泄露修正方案[/i],在自定义的Application的onCreate方法调用fixFocusedViewLeak方法即可解决。

解决方案源码:https://gist.github.com/pyricau/4df64341cc978a7de414#file-immleaks-java-L137
注意:1.SDK_INT < KITKAT || SDK_INT > 23;2.在合适的地方调用fixFocusedViewLeak方法.可以在Application或者Activity的onCreate方法调用

转载地址:https://zhuanlan.zhihu.com/p/20828861
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  android 内存泄露