android EditText中的快速高亮显示
我正在开发IDE,现在使用EditText突出显示源代码需要大约21秒的时间来处理几千个令牌(常规源文件)。有没有加快速度的机会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();
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