当被要求更新ui时TextWatcher滞后

时间:2014-04-26 00:26:58

标签: android performance user-interface lag textwatcher

TextWatcher让我的EditText迟到了。在我做了一些检查后,发生这种情况的唯一方法是每当我做与UI有关的行动时;任何其他与UI无关的操作都不会导致延迟。

它应该是非常简单的方法所以我必须不理解某些东西:

editText.addTextChangedListener(new TextWatcher() {

    @Override
    public void onTextChanged(CharSequence likers, int arg1, int arg2, int arg3) {  }
    @Override
    public void beforeTextChanged(CharSequence arg0, int arg1, int arg2, int arg3) { }

    @Override
    public void afterTextChanged(Editable arg) {
        String text = arg.toString().trim();
        mTextView2.setText(" "+text +" ");
        mTextView1.setText(" "+text +" ");   
    }
});

导致滞后的原因是什么,我应该怎样做才能消除滞后?

1 个答案:

答案 0 :(得分:1)

您需要使用Editable变量进行所需的更改,这就是重点。 与String相比,Editable操作非常慢。

确保在更改前删除textChangedListener并在更改后将其放回,否则您将进入循环。