侧边栏壁纸
博主头像
Stars-one博主等级

所有的创作都是具有价值的
Android Kotlin Java开发者,喜欢折腾搞机,开发小工具
赞赏发电,给予支持

  • 累计撰写 138 篇文章
  • 累计创建 41 个标签
  • 累计收到 10 条评论

目 录CONTENT

文章目录

Android webview只加载10%且出现白屏问题排查解决

Stars-one
2022-07-19 / 0 评论 / 0 点赞 / 113 阅读 / 619 字

问题

有一个主页面,布局里是包含的一个自定义Webview,并且注入了些原生的方法进去,供原生JS调用

原生JS调用某个方法后,会先弹出个对话框,之后进入到另外一个含Webview的页面,并加载JS传递过来的一个url,但是却出现了白屏的问题

排查

首先,根据网上的资料,一一排查了一遍,但都没有结果

之后,我尝试注释掉了设置WebChromeClient对象,发现网页均可以正常加载

但此方法不是我想要的,因为我的自定义WebView是实现了文件上传的功能,如果不设置WebChromeClient的话,文件上传的功能不可使用

之后网上的大多是解决方案都是去改WebViewClient的,所以,肯定不是我这种情况的解决方法

在找资料的过程中,知道WebChromeClient类中提供了一个方法,可以获取当前网页的加载进度,于是重写了此方法,将进度打印了出来,但是进度就是加载到10%,之后没有任何反应了,页面也是白屏的

抱着试一试,搜索了webview 加载卡住,结果中发现了一个符合我情况的标题Android WebView 进度卡住10%不动,页面空白,页面无反应,不报错

进去一看,瞬间就有了思路,原来是我用来测试的html里js代码有触发js弹窗,然后我又是再弹窗之后直接跳转到页面,于是新页面中的webview加载资源就被暂停调了

于是我把html里的js弹窗取消,于是网页也是能够正常加载出来了

这个问题也是排查了两天,真不容易 😂

如果硬要解释的话,webview设置了WebChromeClient,里面含有js弹窗的相关处理的方法回调,所以把新页面的webview的加载给暂停了,但是如果不设置WebChromeClient,相当于没有js弹窗拦截,所以就不会讲webview的加载给暂停

参考

0

评论区