在某些情况下,我创建一个EditText,将值传递给另一个Fragment,然后在EditText所属的ViewGroup上调用removeAllViews以删除EditText。
问题是与EditText关联的InputConnectionWrapper仍占用内存。
在上面的堆转储中,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无法最终确定的原因是什么?
答案 0 :(得分:0)
我遇到了通过LeakCanary发现的同一问题,这给了我一个InputConnectionWrapper链,这些链包装了EditText。
这似乎是棉花糖中已修复的Android代码错误。当我将我的最小API版本从21(棒棒糖)升级到23(棉花糖)时,问题就消失了。