我正在开发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线程可用于触摸小部件,因此后台工作者的标准方法不起作用。
答案 0 :(得分:0)
我发现工作的唯一方法是仅突出显示可见的EditText区域而不是所有文档,并在滚动时重新加亮