Android TextView慢使用append()数百次 - 解决方案?

时间:2011-12-03 20:10:06

标签: android textview append line

我有Android的源代码编辑器,我有一个行号计数器,位于主EditText的左侧,里面有源代码。

我有以下用于更新行号文本视图的功能:

String lineDelimiter = "\n";
public void updateLineNumbers(){
    int lines = textBox.getLineCount();
    lineNums.setText(1 + lineDelimiter);
    for(int i = 2; i < lines; i++){
      lineNums.append(i + lineDelimiter);
    }
}

所有这一切都很好,但问题是当你有一个说200多行的文档时,你会发现添加行时会有一点延迟。这是因为Android TextView的setText / append方法有点慢吗?或者它是导致延迟的连接?

我还做了一个类似的功能,当用户添加行号时附加行号,反之亦然,而不是像上面的函数那样清除TextView并再次添加每个行号。但是当用户添加/删除行时,此功能仍然滞后于应用程序。

我怎么能阻止这个?我无法想到要做什么,它会让我感到压力,因为它使我的应用程序滞后并使其无法用于大型文件! :(

感谢您的期待!


我找到了一种快速行号的方法,即使用自定义TextView和onDraw(Canvas画布)覆盖并以这种方式绘制它们,从而产生无滞后的行号:)。

1 个答案:

答案 0 :(得分:1)

  

这是导致Android TextView的setText / append方法有点慢吗?或者是导致延迟的连接?

使用Traceview并查找。

关闭袖口,我想在append()上多次调用TextView比在append()上多次调用StringBuilder要慢得多},然后在setText()上调用TextView一次。

  

我该怎么办?

不要那样处理行号。例如,将TextView放在EditText的左侧,并将您的行号放在TextView中,每行一个。