Android:处理和编辑文本中的大量跨距

Android:处理和编辑文本中的大量跨距,android,Android,我在EditText中遇到了大量跨距的性能问题。事实上,我很喜欢大的源代码。为了突出显示,我用不同的颜色和不同的位置设置了跨距。假设我们有以下情况: public static void main(String[] args) 我的代码将输出以下标记(这些只是示例中的数字,它们可能是错误的): 然后我设置跨度: for(Lexer.Token t: tokens) { text.setSpan(new ForegroundColorSpan(colorizer.getColor(t))

我在
EditText
中遇到了大量跨距的性能问题。事实上,我很喜欢大的源代码。为了突出显示,我用不同的颜色和不同的位置设置了跨距。假设我们有以下情况:

public static void main(String[] args)
我的代码将输出以下标记(这些只是示例中的数字,它们可能是错误的):

然后我设置跨度:

for(Lexer.Token t: tokens) {
    text.setSpan(new ForegroundColorSpan(colorizer.getColor(t)), t.start, t.end, Spannable.SPAN_INCLUSIVE_INCLUSIVE);
}
现在,假设我在开头添加char
a

a public static void main(String[] args)
结果是,所有跨度都需要通过添加2来重新计算。问题是,如果我有一个巨大的文件和如此多的跨度,计算速度会很慢

我的想法是只将syntaxhighlight应用于代码的可见部分,但这样做有点混乱,我正在寻找更好、更简单的解决方案。有人有好的解决办法吗


提前感谢您

您所说的代码可见部分是什么意思?即在视口中可见的部分。除了您所做的之外,没有其他方法可以添加跨距。您可以更好地使用StringBuilder而不是String,因为每次对其执行操作(串联、toUpperCase等)时都会创建不可变的字符串,这会消耗大量堆内存。好的,谢谢。所以我可能不得不遵循我的想法。顺便说一句,我在读这篇文章:但我不认为这是一个解决我的问题的办法。我不知道还有什么其他方法可以加速计算,因为代码中没有计算。您正在传递已具有单词开始和结束位置的令牌。起初我以为您是在从主方法添加字符串。如果你有全文和它的标记,那么你可以做一些类似于循环的事情来添加跨度。
a public static void main(String[] args)