android - 当要求更新 ui 时 TextWatcher 滞后

标签 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 +" ");   
    }
});

是什么导致了延迟,我应该怎样做才能消除延迟?

最佳答案

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

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

关于android - 当要求更新 ui 时 TextWatcher 滞后,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23305113/

相关文章:

Android debuggable=false 导致 jQuery.ajax POST 在 Cordova/Phonegap Eclipse 项目中失败

android - 通过 ViewList MultiSelection 从数据库中删除

java - 垃圾收集日志记录会给 JVM 增加哪些开销?

c++ - _mm_cvtsd_f64 模拟高阶 float

java - 在 Java 中跟踪/轮询日志文件的最有效方法

android - 如何处理在 Android 中实现惰性列表功能的动态列表?

android - ./gradlew assembleRelease构建React Native Web View而不是我的项目

Android+LibGDX - 只有在完成 Libgdx Activity 后,纹理才会在 Android UI Activity 中消失?

objective-c - 拖动以触发 UIButton

ios - swift SKSpriteNode : Detect Tap/DoubleTap/LongPress