创建全局WebView报错Didn't find class "android.webkit.RenderProcessGoneDetail"

在创建全局WebView时遇到一个错误,导致WebViewActivity显示白屏。错误源于WebView的内部bug。为解决此问题,将全局WebView的初始化步骤改在SplashActivity和MainActivity中各执行一次。具体做法是,在SplashActivity和MainActivity的onCreate方法内分别检查并创建WebView。这样可以避免首次启动时的异常,确保全局WebView能正常工作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

    创建全局WebView时遇到一个报错,WebViewActivity页面会白屏,google后发现是WebView的bug,详细的WebView的bug介绍详见链接(https://groups.google.com/a/chromium.org/forum/#!topic/android-webview-dev/m0EtO3IXNn0),本来是在MainActivity中创建一个全局webview,结果安装第一次都会报此异常,后来将其改为先在SplashActivity中初始化一次,再在MainActivity中初始化一次,全局WebView便可以正常创建了,代码如下:

- WebViewActivity.java

    public static WebView webView;

- SplashActivity.java

    onCreate中:

        try{

            if(WebViewActivity.webView==null){

                WebViewActivity.webView=new WebView(SplashActivity.this);

            }

        }catch(Exception e){

            e.printStackTrace();

        }

- MainActivity.java

    onCreate中:

        try{

            if(WebViewActivity.webView==null){

                WebViewActivity.webView=new WebView(MainActivity.this);

            }

        }catch(Exception e){

            e.printStackTrace();

        }



    详细的报错日志如下:

Rejecting re-init on previously-failed class java.lang.Class<com.android.webview.chromium.WebViewContentsClientAdapter$6>: java.lang.NoClassDefFoundError: Failed resolution of: Landroid/webkit/RenderProcessGoneDetail;
        at com.android.webview.chromium.WebViewContentsClientAdapter com.android.webview.chromium.WebViewChromiumFactoryProvider.createWebViewContentsClientAdapter(android.webkit.WebView, android.content.Context) (WebViewChromiumFactoryProvider.java:328)
        at void com.android.webview.chromium.WebViewChromium.init(java.util.Map, boolean) (WebViewChromium.java:42)
        at void android.webkit.WebView.<init>(android.content.Context, android.util.AttributeSet, int, int, java.util.Map, boolean) (WebView.java:636)
        at void android.webkit.WebView.<init>(android.content.Context, android.util.AttributeSet, int, int) (WebView.java:572)
        at void android.webkit.WebView.<init>(android.content.Context, android.util.AttributeSet, int) (WebView.java:555)
        at void android.webkit.WebView.<init>(android.content.Context, android.util.AttributeSet) (WebView.java:542)
        at void android.webkit.WebView.<init>(android.content.Context) (WebView.java:532)
        at void com.xizhulou.gamehello.activity.game.GameWebViewActivity.initWebView(android.content.Context) (GameWebViewActivity.java:172)
        at void com.xizhulou.gamehello.activity.game.GameWebViewActivity.init() (GameWebViewActivity.java:125)
        at void com.xizhulou.gamehello.activity.game.GameWebViewActivity.onCreate(android.os.Bundle) (GameWebViewActivity.java:77)
        at void android.app.Activity.performCreate(android.os.Bundle) (Activity.java:6915)
        at void android.app.Instrumentation.callActivityOnCreate(android.app.Activity, android.os.Bundle) (Instrumentation.java:1123)
        at android.app.Activity android.app.ActivityThread.performLaunchActivity(android.app.ActivityThread$ActivityClientRecord, android.content.Intent) (ActivityThread.java:2746)
        at void android.app.ActivityThread.handleLaunchActivity(android.app.ActivityThread$ActivityClientRecord, android.content.Intent, java.lang.String) (ActivityThread.java:2864)
        at void android.app.ActivityThread.-wrap12(android.app.ActivityThread, android.app.ActivityThread$ActivityClientRecord, android.content.Intent, java.lang.String) (ActivityThread.java:-1)
        at void android.app.ActivityThread$H.handleMessage(android.os.Message) (ActivityThread.java:1567)
        at void android.os.Handler.dispatchMessage(android.os.Message) (Handler.java:105)
        at void android.os.Looper.loop() (Looper.java:156)
        at void android.app.ActivityThread.main(java.lang.String[]) (ActivityThread.java:6523)
        at java.lang.Object java.lang.reflect.Method.invoke!(java.lang.Object, java.lang.Object[]) (Method.java:-2)
        at void com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run() (ZygoteInit.java:942)
        at void com.android.internal.os.ZygoteInit.main(java.lang.String[]) (ZygoteInit.java:832)
    Caused by: java.lang.ClassNotFoundException: Didn't find class "android.webkit.RenderProcessGoneDetail" on path: DexPathList[[zip file "/system/app/WebViewGoogle/WebViewGoogle.apk"],nativeLibraryDirectories=[/system/app/WebViewGoogle/lib/arm, /system/app/WebViewGoogle/WebViewGoogle.apk!/lib/armeabi-v7a, /system/lib, /vendor/lib, /system/vendor/lib, /product/lib, /system/lib, /vendor/lib, /system/vendor/lib, /product/lib]]
        at java.lang.Class dalvik.system.BaseDexClassLoader.findClass(java.lang.String) (BaseDexClassLoader.java:56)
        at java.lang.Class java.lang.ClassLoader.loadClass(java.lang.String, boolean) (ClassLoader.java:380)
        at java.lang.Class java.lang.ClassLoader.loadClass(java.lang.String) (ClassLoader.java:312)
        at com.android.webview.chromium.WebViewContentsClientAdapter com.android.webview.chromium.WebViewChromiumFactoryProvider.createWebViewContentsClientAdapter(android.webkit.WebView, android.content.Context) (WebViewChromiumFactoryProvider.java:328)
        at void com.android.webview.chromium.WebViewChromium.init(java.util.Map, boolean) (WebViewChromium.java:42)
        at void android.webkit.WebView.<init>(android.content.Context, android.util.AttributeSet, int, int, java.util.Map, boolean) (WebView.java:636)
        at void android.webkit.WebView.<init>(android.content.Context, android.util.AttributeSet, int, int) (WebView.java:572)
        at void android.webkit.WebView.<init>(android.content.Context, android.util.AttributeSet, int) (WebView.java:555)
        at void android.webkit.WebView.<init>(android.content.Context, android.util.AttributeSet) (WebView.java:542)
        at void android.webkit.WebView.<init>(android.content.Context) (WebView.java:532)
        at void com.xizhulou.gamehello.activity.game.GameWebViewActivity.initWebView(android.content.Context) (GameWebViewActivity.java:172)
        at void com.xizhulou.gamehello.activity.game.GameWebViewActivity.init() (GameWebViewActivity.java:125)
        at void com.xizhulou.gamehello.activity.game.GameWebViewActivity.onCreate(android.os.Bundle) (GameWebViewActivity.java:77)
        at void android.app.Activity.performCreate(android.os.Bundle) (Activity.java:6915)
        at void android.app.Instrumentation.callActivityOnCreate(android.app.Activity, android.os.Bundle) (Instrumentation.java:1123)
        at android.app.Activity android.app.ActivityThread.performLaunchActivity(android.app.ActivityThread$ActivityClientRecord, android.content.Intent) (ActivityThread.java:2746)
        at void android.app.ActivityThread.handleLaunchActivity(android.app.ActivityThread$ActivityClientRecord, android.content.Intent, java.lang.String) (ActivityThread.java:2864)
        at void android.app.ActivityThread.-wrap12(android.app.ActivityThread, android.app.ActivityThread$ActivityClientRecord, android.content.Intent, java.lang.String) (ActivityThread.java:-1)
        at void android.app.ActivityThread$H.handleMessage(android.os.Message) (ActivityThread.java:1567)
        at void android.os.Handler.dispatchMessage(android.os.Message) (Handler.java:105)
        at void android.os.Looper.loop() (Looper.java:156)
        at void android.app.ActivityThread.main(java.lang.String[]) (ActivityThread.java:6523)
        at java.lang.Object java.lang.reflect.Method.invoke!(java.lang.Object, java.lang.Object[]) (Method.java:-2)
        at void com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run() (ZygoteInit.java:942)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值