项目中遇到了webview多次调用onPageFinished问题,相关文章比较多,但是很多是无效的,甚至有些需要服务器修改。
直到谷歌到https://stackoverflow.com/questions/3149216/how-to-listen-for-a-webview-finishing-loading-a-url
才发现有用的方案
其中这个方法最终优雅得解决了我的问题
public void onPageFinished(WebView view, String url) {
super.onPageFinished(view, url);
if (m_webView.getProgress() == 100) {
progressBar.setVisibility(View.GONE);
m_webView.setVisibility(View.VISIBLE);
}
}
ps:关于重定向问题
本文写于2018年,当时的场景是js等资源未加载完的情况,出现了onPageFinished的调用,故此方案解决了当时的问题。
后面就是评论反馈了很多关于重定向后的问题以及progress100多次出现的情况,多次测试后暂定都是重定向引起的
其实我的理解里重定向后就是另外一个网站了,不止onPageFinished会重复调用,onPageStarted也会重复调用,建议用url过滤
override fun onPageFinished(view: WebView?,url: String?) {
super.onPageFinished(view, url)
// 此次通过url进行过滤
}
填坑时间:2021.3.17