AwContents must be created if we

2021-08-05  本文已影响0人  寻水的鱼Chock

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);
.....
上一篇下一篇

猜你喜欢

热点阅读