Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/205.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
android.webkit.WebViewClassic.loadDataWithBaseURL中Webview中的Java nullpointer异常_Android_Android Webview_Adview - Fatal编程技术网

android.webkit.WebViewClassic.loadDataWithBaseURL中Webview中的Java nullpointer异常

android.webkit.WebViewClassic.loadDataWithBaseURL中Webview中的Java nullpointer异常,android,android-webview,adview,Android,Android Webview,Adview,根据中提供的建议,我修改了AdMob代码以符合建议,这有效地减少了出现的异常数量。然而,一个新的例外正在出现 代码如下: @Override protected void onDestroy() { if ( adView != null ) { adView.destroy(); adView = null; Log.i(ApplicationData.APP_TAG, TAG + ": OnDestroy, destroy

根据中提供的建议,我修改了AdMob代码以符合建议,这有效地减少了出现的异常数量。然而,一个新的例外正在出现

代码如下:

@Override
protected void onDestroy() {
    if ( adView != null ) {
          adView.destroy();
          adView = null;

          Log.i(ApplicationData.APP_TAG, TAG + ": OnDestroy, destroying the Adview");
     }

    super.onDestroy();
}
方法
adView.destroy()
在LogCat消息发布时似乎运行良好。在此消息之后,我在
WebView
上收到以下异常:

java.lang.NullPointerException
    at android.webkit.WebViewClassic.loadDataWithBaseURL(WebViewClassic.java:2741)
    at android.webkit.WebView.loadDataWithBaseURL(WebView.java:919)
    at com.google.android.gms.ads.internal.request.n.run(SourceFile:206)
    at android.os.Handler.handleCallback(Handler.java:725)
    at android.os.Handler.dispatchMessage(Handler.java:92)
    at android.os.Looper.loop(Looper.java:153)
    at android.app.ActivityThread.main(ActivityThread.java:5297)
    at java.lang.reflect.Method.invokeNative(Native Method)
    at java.lang.reflect.Method.invoke(Method.java:511)
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:833)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:600)
    at dalvik.system.NativeStart.main(Native Method)

遗憾的是,我无法找到重现问题的方法,但问题在生产中经常发生。我没有发现任何问题,有人知道我能做什么吗?

谷歌移动广告SDK团队的一位成员说(3月14日)

我们在第一次报道这一问题时就对其进行了调查,并在Google Play服务中发布了一个修复程序。当用户的设备更新到新版本时,您会看到越来越少的实例


请参阅

在调用loadDataWithBaseUrl之前销毁WebView时(可能由其他线程调用),会发生这种情况。在AdMob代码中,我看到他们现在处理这个问题的方式如下

public void loadDataWithBaseURL(String baseUrl, String data, String mimeType, String encoding, String historyUrl) {
        synchronized(this) {
            if(!this.isDestroyed()) {
                super.loadDataWithBaseURL(baseUrl, data, mimeType, encoding, historyUrl);
            } else {
                Log.d("The webview is destroyed. Ignoring action.");
            }

        }
    }

因此,现在不应该出现这种情况。

WebViewClassic中第2741行发生了什么?我对android代码的这一部分不太熟悉。loadDataWithBaseURL(字符串baseUrl、字符串数据、字符串mimeType、字符串编码、字符串历史URL)=>其中一个值为null。似乎并发runnable正在尝试在活动被销毁后访问它的某些部分,可能是
adView
。活动中是否有其他线程正在运行?在
adView.onDestroy()
之前,您是否尝试过调用
adView.pause()
?(保留
onPause
中的
adView.pause()
)谢谢,看起来该漏洞存在于Android手机中,并且随着用户更新到新版本,它将消失。谢谢你发现它。到目前为止,我还没有看到任何新的错误。谢谢你的考古努力