目前,在处理大量文本行(10000+)时,Android的EditText速度非常慢。看起来,这种减速的部分原因是EditText支持跨度,主要是因为EditText计算每一行的宽度,这是非常昂贵的。有没有比EditText更快的替代品,或者有一种方法可以优化它,使它变得可用?
编辑:方法跟踪如下:
android.text.StaticLayout.generate: 99.1% CPU time inclusive, 8.8% exclusive (1 call)
android.text.Layout.getParagraphSpans: 28% inclusive, 1.1% exclusive (4686 calls)
android.text.MeasuredText.setPara: 20.6% inclusive, 1.6% exclusive (2343 calls)
android.text.MeasuredText.addStyleRun: 18.6% inclusive, 1.1& exclusive (2343 calls)
android.text.SpannableStringBuilder.getSpans: 15% inclusive (of parent calls), 56.7% inclusive (of all calls, 47.3% of which are from android.text.Layout.getParagraphSpans, 26% are from android.text.MeasuredText.setPara, 26% are from android.text.StaticLayout.generate)
发布于 2015-04-23 23:37:29
您能做的最好的事情就是使用带有EditText
的RecyclerView
作为它的项目,这样您就可以为您的每一行获得一个新的EditText
。
新的一行将是你唯一需要实现的东西。
发布于 2015-04-23 22:57:05
尽管this article只谈到在文本不变的情况下优化静态TextViews,但它可能会让您走上正确的道路,使EditText性能更高。
发布于 2015-04-23 23:32:58
避免在RelativeLayout中使用EditText,而应使用LinearLayout。
https://stackoverflow.com/questions/29827029
复制相似问题