1、问题描述
部分手机在应用第一次创建WebView时会抛出java.lang.IllegalStateException: AwContents must be created if we are not posting!异常, 导致应用崩溃。
崩溃堆栈:
Caused by: java.lang.IllegalStateException: AwContents must be created if we are not posting!
at K7.b(chromium-TrichromeWebViewGoogle.apk-stable-410410183:5)
at com.android.webview.chromium.WebViewChromium.b(chromium-TrichromeWebViewGoogle.apk-stable-410410183:1)
at com.android.webview.chromium.WebViewChromium.addJavascriptInterface(chromium-TrichromeWebViewGoogle.apk-stable-410410183:1)
at j9.run(chromium-TrichromeWebViewGoogle.apk-stable-410410183:1)
at Mu.b(chromium-TrichromeWebViewGoogle.apk-stable-410410183:3)
at ka.i(chromium-TrichromeWebViewGoogle.apk-stable-410410183:77)
at ka.b(chromium-TrichromeWebViewGoogle.apk-stable-410410183:15)
at ka.k(chromium-TrichromeWebViewGoogle.apk-stable-410410183:2)
at com.android.webview.chromium.WebViewChromiumFactoryProvider.h(chromium-TrichromeWebViewGoogle.apk-stable-410410183:2)
at com.android.webview.chromium.WebViewChromium.init(chromium-TrichromeWebViewGoogle.apk-stable-410410183:14)
at android.webkit.WebView.<init>(WebView.java:429)
at android.webkit.WebView.<init>(WebView.java:353)
at android.webkit.WebView.<init>(WebView.java:336)
at android.webkit.WebView.<init>(WebView.java:323)
... 42 more
2、分析过程
搜遍了全网, 也只找到了一篇类似的文章。通篇阅读也没找到有效的解决方案,但从中得到一些有效的信:
1)此问题出现在底层 ;
2)非应用层所能控制;
3)只出现在部分手机上;
4)是调用先后顺序的问题导致的;
3、解决方案
在实际创建WebView之前,额外再创建一个不需要使用的WebView对象,让其先崩溃一次,以保护住实际需要使用时不崩溃。
try {
//部分手机第一次创建Web会崩溃, 让他自己先崩一次再创建正常的WebView
//"AwContents must be created if we are not posting!"
new WebView(getContext());
} catch (Exception e) {
e.printStackTrace();
}
setContentView(R.layout.activity_webview);
.....
网友评论