InputConnectionWrapper尚未最终确定并导致Android中的内存泄漏

时间:2018-03-16 04:47:54

标签: android android-edittext inputconnection

在某些情况下,我创建一个EditText,将值传递给另一个Fragment,然后在EditText所属的ViewGroup上调用removeAllViews以删除EditText。

问题是与EditText关联的InputConnectionWrapper仍占用内存。

enter image description here

在上面的堆转储中,InputConnectionWrapper的分配超过300,占用了相当多的内存。

但是,启用堆转储后,Activity中只有一个EditText,并且判断由于相应的EditText而未创建InputConnectionWrapper。

要关闭InputConnectionWrapper,我尝试了以下功能。

    TextKeyListener.clear(editText.getText());
    editText.setHint(null);
    editText.removeTextChangedListener(this);
    editText=null;
    // The ViewGroup will then execute removeAllViews.

但是,InputConnectionWrapper似乎随着时间的推移而分配得更多,因为它尚未最终确定。

InputConnectionWrapper无法最终确定的原因是什么?

1 个答案:

答案 0 :(得分:0)

我遇到了通过LeakCanary发现的同一问题,这给了我一个InputConnectionWrapper链,这些链包装了EditText。

这似乎是棉花糖中已修复的Android代码错误。当我将我的最小API版本从21(棒棒糖)升级到23(棉花糖)时,问题就消失了。