美文网首页
WebView 遇到的问题

WebView 遇到的问题

作者: 笑叶林 | 来源:发表于2018-07-10 12:00 被阅读16次

onPageStarted() 被调用多次问题:

因为网址的加载过程中存在重定向问题,所以会被调用多次。 这个是不可避免的,重定向后都是一个新的网址,肯定会重新再调用 onPageStarted()

如果在这个方法里面涉及到一些逻辑,尽可能在这个逻辑里面加入一些判断,保证想要执行的逻辑只执行一次,这也是有益于程序的。

@Override 
public void onPageStarted(WebView view, String url, Bitmap favicon) { 
    progressBar.setVisibility(VISIBLE); 
    progressBar.setProgress(0); 

    if(!isLoading) { 
        //isLoading 默认为false 
        isLoading = true; 
        ... 
        ... 
        //执行只需要执行一次的逻辑 
    } 

} 

// 然后在onPageFinished()

isLoading = false; 

在onPageStarted() 调用 webView.canGoBack()返回 false 问题

有时在加载网址的时候,需要对当前webview的状态进行判断,例如,自定义了一些前进、后退按钮,便需要实时的刷新按钮,需要在网址发生变化时监听webView。

在onPageStarted()里设置监听,去获取webView 的状态,但是有时会出现上述问题,明明webview是可以返回的,在onPageStarted()里获取的值为false。

解决方案: 经过测试onProgressChanged()方法的调用情况,发现在网络的加载进度在30%左右以后,canGoBack() 才返回 true;所以可以在onProgressChanged() 里加入监听,或是在onPageFinished()里去监听 webView的状态。

在onPageFinished() 里去设置progressBar 不可见,仍然看到进度条显示出来。

问题出现的原因,有些不清楚为什么,但是在设置的时候更改为以下便可以。

progressBar.setVisibility(View.GONE); 

所以在自行设置的时候,可以设置progressBar 为GONE 而不是INVISIBLE;

在一些低版本上,会出现webview 销毁时 程序发生crash的情况:

此类情况的出现,往往是webview销毁时出现了问题,可以仔细检查下自己代码的编写。

webView销毁代码示例:

if (webView != null) { 
    // 要首先移除 
    removeView(webView); 

    // 清理缓存 
    webView.stopLoading(); 
    webView.onPause(); 
    webView.clearHistory(); 
    webView.clearCache(true); 
    webView.clearFormData(); 
    webView.clearSslPreferences(); 
    WebStorage.getInstance().deleteAllData(); 
    webView.destroyDrawingCache(); 
    webView.removeAllViews(); 

    // 最后再去webView.destroy(); 
    webView.destroy(); 
} 

若是 webView.destroy() 放在了前面,则就会出现错误,需要把webView.destroy()放在最后面。

相关文章

  • 关于WebView的使用-基本使用

    WebView问题系列: 1. 遇到的问题-基本使用 2.遇到的问题- All WebView methods m...

  • 关于WebView的使用-线程

    WebView问题系列: 1.遇到的问题-基本使用2.遇到的问题- All WebView methods mus...

  • WebView遇到的问题

    1.场景说明:进行芝麻认证:通过webview打开支付宝提供的H5,传入姓名和身份证号码进行认证,认证成功后,在回...

  • WebView 遇到的问题

    onPageStarted() 被调用多次问题: 因为网址的加载过程中存在重定向问题,所以会被调用多次。 这个是不...

  • WebView 遇到的问题

    WebView 遇到的问题 总结一些在开发中遇到的问题, 上一篇中也有部分描述: WebView 的反思和记录 ...

  • Flutter中 webview的键盘问题解决

    webview的版本是webview_flutter: ^0.3.22+1 现在遇到的问题是如果webview中输...

  • app下载js出错

    今天工作遇到一个问题,app本来为了webview的性能做了js缓存的功能,最近有遇到webview打不开的问题,...

  • webView开发遇到的问题

    1.怎么创建post的web请求 我们平常都是比较熟悉get方式的请求方式,post用的比较少,但是在类似支付页面...

  • Android中WebView使用的一个问题

    Android项目中使用WebView,解决问题时顺便遇到的一个页面回调时序的问题。 问题描述 WebView加载...

  • 计算获取cell中webview的高度

    遇到一个需求: 1、cell中嵌套一个webview 。webview加载网页数据; 遇到的问题: 1、无法得到c...

网友评论

      本文标题:WebView 遇到的问题

      本文链接:https://www.haomeiwen.com/subject/vtefpftx.html