• 首页 首页 icon
  • 工具库 工具库 icon
    • IP查询 IP查询 icon
  • 内容库 内容库 icon
    • 快讯库 快讯库 icon
    • 精品库 精品库 icon
    • 问答库 问答库 icon
  • 更多 更多 icon
    • 服务条款 服务条款 icon

WebView onPageFinished 被重复调用的问题

武飞扬头像
zhimingwen
帮助2

最近在开发一个新APP,因为要上架谷歌商店,所以webview组件用的安卓官方原生的。结果发现onPageFinished会重复调用,总共会加载3次,而且我的url并没有重定向的问题。

查资料:

WebViewClient.onPageFinished()。你永远无法确定当WebView调用这个方法的时候,网页内容是否真的加载完毕了。当前正在加载的网页产生跳转的时候这个方法可能会被多次调用,StackOverflow上有比较具体的解释(
How to listen for a Webview finishing loading a URL in Android? ),
但其中列举的解决方法并不完美。所以当你的WebView需要加载各种各样的网页并且需要在页面加载完成时采取一些操作的话,可能WebChromeClient.onProgressChanged()比WebViewClient.onPageFinished()都要靠谱一些。
WebView 在Android4.4的手机上onPageFinished()回调会多调用一次(具体原因待追查)

需要尽量避免在onPageFinished()中做业务操作,否则会导致重复调用,还有可能会引起逻辑上的错误.

后来尝试改为腾讯的X5WebView,发现是正常的只加载1次。可惜x5会动态下发和下载so包等问题,不适合集成到上架谷歌商店的应用里。

结论:
只上架中国大陆的APP,推荐使用X5WebView;
必须上架Google Play商店的,只能使用原生WebView,写一个变量或者方法去想办法避免重复调用的问题。

这篇好文章是转载于:学新通技术网

  • 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
  • 本站站名: 学新通技术网
  • 本文地址: /boutique/detail/tanhgbkaah
系列文章
更多 icon
同类精品
更多 icon
继续加载