BUG 1
问题表现:
webView空白,但是更换了url之后显示正常,一度认为是前端html的不兼容导致的,其实是对前端技术的不理解导致的;
问题分析
前端html文件放到WebView加载,正常会走WebViewClient中的onPageStarted(WebViewview, Stringurl, Bitmapfavicon)方法和onPageFinished(WebViewview, Stringurl)方法。
测试中https://www.baidu.com会顺利走完这两个方法,但是部分网页就不走onPageFinished方法了。
于是质问前端小哥的代码,反复讨论得知:JS没加载完,就会白屏;不用于https://www.baidu.com这个地址的是,我们的网页包含了定时器;
根据前端小哥提示:看看什么情况下会导致JS加载不完,得到答案,部分页面切换,导致JS的定时器被暂停,但是重新回来的时候,并没有及时重新调起定时器;
问题解决方案:
@Override
public void onDestroy(){
webView.stopLoading();
webView.setWebChromeClient(null);
webView.setWebViewClient(null);
webView.destroy();
super.onDestroy();
EventBus.getDefault().unregister(this);
}
@Override
public void onResume(){
super.onResume();
webView.onResume();
webView.resumeTimers();
}
@Override
public void onPause(){
super.onPause();
webView.onPause();
webView.pauseTimers();
}
网友评论