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

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


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

这个问题很多人都遇到过,网上已经有比较成熟的方案,分析原因比较透彻的是这篇文章:[Android][Memory Leak] InputMethodManager内存泄露现象及解决,改善方案可以参考Leaknary给出的方案:InputMethodManager内存泄露修正方案,在自定义的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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值