WebView onPageFinished 被重复调用的问题

WebView onPageFinished 被重复调用的问题,第1张

WebView onPageFinished 被重复调用的问题

最近在开发一个新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,写一个变量或者方法去想办法避免重复调用的问题。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zaji/5694805.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-17
下一篇 2022-12-17

发表评论

登录后才能评论

评论列表(0条)

保存