EditText绑定TextWatcher后处理事件卡顿

来源:互联网 发布:淘宝店铺申请全球购 编辑:程序博客网 时间:2024/05/29 08:18

今天遇到一个问题,需要监听EditText中的内容变化,当编辑框内的内容清空时加载网络数据,自然而言会在afterTextChanged方法中执行我的对应逻辑,但是遇到了一个问题,当我的内容变化时,UI直接卡死。经过查阅资料,发现原因如下:

1.原因

EditText在addTextChangedListener添加的TextWatcher中如果在afterTextChanged方法中又重新调用了setText, 那么会重复触发对此方法的递归死循环调用, 产生ANR

2.解决方案

在执行逻辑前先remove掉EditText绑定的监听器,等逻辑执行完毕后再绑定该监听器.代码如下:

   @Override    public void afterTextChanged(Editable s) {       xxxEdit.removeTextChangedListener(this);       xxxEdit.setText("新取值");       xxxEdit.addTextChangedListener(this);    }


问题得到了解决,在此记录。

原创粉丝点击