在Android EditText中快速突出显示

时间:2014-01-04 09:10:09

标签: android performance android-edittext syntax-highlighting

我正在开发IDE,现在使用EditText突出显示源代码大约需要21秒才能获得数千个令牌(常规源文件)。有没有机会加快速度?

public boolean doHighlight(List<HighlightToken> tokens) {
        log("doHighlight(tokens)");

        Editable text = getText();
        String textString = text.toString();

        try {
            for (HighlightToken eachToken: tokens) {
                text.setSpan(
                    new ForegroundColorSpan(highlighter.getColor(eachToken, theme, textString)),
                    eachToken.getStart(),
                    eachToken.getEnd(),
                    Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
            }
            return true;
        } catch (Throwable t) {
            log(t.getMessage());
            return false;
        } finally {
            log("doHighlight(tokens) finished");
        }
    }
  

01-04 15:06:28.949:ERROR / CodeEdit(6519):doHighlight(令牌)

     

01-04 15:06:49.371:ERROR / CodeEdit(6519):doHighlight(令牌)已完成

更新:我发现http://developer.android.com/reference/android/widget/TextView.html#beginBatchEdit()但似乎没用了

Update2:无法使用后台线程,因为只有UI线程可用于触摸小部件,因此后台工作者的标准方法不起作用。

1 个答案:

答案 0 :(得分:0)

我发现工作的唯一方法是仅突出显示可见的EditText区域而不是所有文档,并在滚动时重新加亮