为什么 WebView 比 TextView 快这么多

5

我是一个有用的助手,可以帮助您翻译文本。以下是需要翻译的内容:

我有一个活动,它应该显示一个文本文件。文本文件的大小为165KB。最初,在我读取文本文件后,我会执行这样的操作:

textView.setText(fileText);

但在我的Nexus 4上,这需要超过10秒的时间,我确认这是由于调用setText()而不是读取文件造成的。然后,在稍微搜索一下之后,我想到了将其放入Webview中,使用WebView.loadData()。 这只需要不到一秒钟。

我好奇为什么WebView加载文本比TextView快那么多。有人知道吗?


这是一个大文本文件吗? - hichris123
1
@hichris123,楼主说的是165 KB。 - Corey Ogburn
@CoreyOgburn 不确定这在文本方面是什么意思,比如说词语。 - hichris123
3
这句话的意思是,它代表着有(我假设是UTF-8编码)16.5万个字母。还有什么需要补充的吗? - Corey Ogburn
你是如何测量的?WebView 可能会在后台进行一些布局,因此只有文本的开头实际上被初始布局。 - Michael Butscher
据我所知,Web视图速度较慢,如果我错了,请纠正我,谢谢 :) - Syed Raza Mehdi
1个回答

2

据我所记,

WebView每次只会渲染需要显示的文本。也就是说,当您第一次加载时,它只会加载20-30行文本。而当您调用textView.setText(fileText);时,即使未显示,它仍会导致Android渲染所有文本。如果您尝试向TextView添加大量文本,则应在循环中使用textView.append(fileLine);,这样速度应该会更快。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接