WebView 滚动缓慢

3
由于某种原因,我正在使用的WebView非常缓慢。对于网页加载时间,我并没有太大的问题,虽然如果有改进的方法,我会很感激。但我最关心的是卡顿不流畅的滚动。我相信肯定有一种方法可以让它运行得更加平滑,因为其他使用(我想)WebView的应用程序没有这个问题。我猜想这些其他应用程序可能在使用某个私有网络客户端,尽管我认为所有应用都这样做的可能性很小。其他人已经在SO上提出了类似的问题,但是没有一个答案特别有效。
3个回答

6
我想你在你的清单文件中有这段代码。
android:hardwareAccelerated="false"
android:largeHeap="true"

如果您有它,您需要将其删除。


1

webView.setLayerType(View.LAYER_TYPE_HARDWARE, null);

这对我很有效。


1
你能详细阐述一下你的答案,并对你提供的解决方案进行更多描述吗? - abarisone

0

根据您提供的信息量,很难猜测您的问题可能是什么:

  1. 您是否在应用程序清单中声明了要使用软件渲染(或通过设置WebView的层类型)?也许尝试硬件模式。
  2. 您正在尝试加载哪个页面?也许有大量的CSS / JavaScript在那里运行?简单的页面是否可以平稳滚动?
  3. 您在哪个Android版本上看到这个问题,您尝试过其他版本吗?也许这是特定于设备的问题?
  4. 滚动是否不平滑(您没有达到60fps),或者手指移动和页面移动之间存在较大的延迟?如果是后者-也许您的触摸处理程序会减慢速度。

以上只是我脑海中的一些想法。关于此主题有很棒的文章,例如这篇文章。此外,如果您正在使用Chromium WebView,则可以通过远程调试使用分析工具


  1. 已尝试过两种方法。
  2. 大多数网页都会出现这种情况,但是正如您所期望的那样,图像越少,卡顿就越少。
  3. 我已经在其他设备上尝试过这个问题,我主要使用的设备是最新的Nexus 7,因此硬件性能绝对不会有问题。
  4. 我在webView上没有自定义触摸处理程序。
- timeshift117
@timeshift117 - 你能在Chrome中加载HTML吗?那里也很卡吗,还是只有WebView卡呢?此外,你能分享一下HTML的链接(或者你应用的链接)吗? - marcin.kosiba
是的,我可以给你发送一份副本,但无论如何,它不是任何特定的HTML或网站出现延迟,而几乎是所有网站。这肯定与webView有关。 - timeshift117
即使在浏览谷歌搜索结果时滚动页面,您甚至可以看到非常小但仍然明显的延迟。 - timeshift117
哦,哇,我刚刚改变了图层类型,它就开始工作了。有点奇怪,因为我已经测试过了。不过好了,谢谢你的帮助。 - timeshift117
@timeshift117,您使用哪种层类型,LAYER_TYPE_SOFTWARE吗? - Fancyoung

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