android EditText中的快速高亮显示

android EditText中的快速高亮显示,android,performance,android-edittext,syntax-highlighting,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();

我正在开发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");
        }
    }
public boolean doHighlight(列出标记){
日志(“doHighlight(tokens)”;
可编辑文本=getText();
String textString=text.toString();
试一试{
for(HighlightToken每个标记:标记){
text.setSpan(
新的ForegroundColorSpan(highlighter.getColor(eachToken、theme、textString)),
eachToken.getStart(),
eachToken.getEnd(),
Spannable.SPAN_独占性SPAN_独占性);
}
返回true;
}捕获(可丢弃的t){
日志(t.getMessage());
返回false;
}最后{
日志(“doHighlight(tokens)finished”);
}
}
01-04 15:06:28.949:错误/代码编辑(6519):doHighlight(标记)

01-04 15:06:49.371:错误/代码编辑(6519):doHighlight(令牌)已完成

更新:我找到了,但似乎没用


更新2:不能使用后台线程,因为只有UI线程可以用于触摸小部件,因此,使用后台工作人员的标准方法不起作用。

我发现唯一有效的方法是只突出显示可见的编辑文本区域,而不是所有文档,并在滚动时重新高亮显示。

您是在模拟器上还是在真实设备上测试它?真实设备-Snapdragon 600,2Gb RAM