来自 Webview 的 Java 空指针异常

Posted

技术标签:

【中文标题】来自 Webview 的 Java 空指针异常【英文标题】:Java nullpointer exception from Webview 【发布时间】:2015-03-23 12:52:22 【问题描述】:

我试图搜索这个问题,但这个错误看起来与this error 不一样(我的 google play 版本较新,请注意该错误位于 WebViewClassic 的不同行,因此可能是不同的错误或在较新版本中相同)但我从 webview 收到完全相同的错误异常

java.lang.NullPointerException
at android.webkit.WebViewClassic$WebViewInputConnection.setNewText(WebViewClassic.java:583)
at android.webkit.WebViewClassic$WebViewInputConnection.setComposingText(WebViewClassic.java:323)
at android.webkit.WebViewClassic$WebViewInputConnection.commitText(WebViewClassic.java:339)
at com.android.internal.view.IInputConnectionWrapper.executeMessage(IInputConnectionWrapper.java:279)
at com.android.internal.view.IInputConnectionWrapper$MyHandler.handleMessage(IInputConnectionWrapper.java:77)
at android.os.Handler.dispatchMessage(Handler.java:99)
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)

但是我没有直接使用任何 webview 类。但是,这个问题可能与 AdView 有关,但我不明白如何。我的代码如下:

 @Override
 public void onPause() 
    //TODO: these lines are created because onPuase of Adview doesn't work

     if ( adView != null ) 
         adView.pause();
         adView.destroy();
         adView = null;

         Log.i(ApplicationData.APP_TAG, TAG + ": OnPause, pausing the Adview");
     

     super.onPause();

 

错误出现在 Log.i 行之后,我原以为在调用 AdView 时会出现此错误,但之后不会出现。此错误是否可能来自线程操作?知道如何避免这个问题吗?

【问题讨论】:

【参考方案1】:

以https://developer.android.com/reference/com/google/android/gms/ads/AdView.html 中的示例和AdView.destroy() 的文档为例,您应该只在onPause() 中调用adView.pause(),然后在onDestroy() 中调用adView.destroy()

堆栈转储看起来像另一个线程正在访问被破坏的AdView 实例。

【讨论】:

嗯...对于 webview 的例外情况,稍后调用此方法将如何避免该问题?我的意思是......对于我遇到的那种错误,为什么它可能来自我们所处的 Activity 状态? 看起来Handler 仍在向WebViewClassic 发送消息,WebViewClassic 被封装在已销毁的AdView 中。 嗯....你可能有一点。我将在生产中进行测试,如果可行,接受问题!!!! 目前没有问题。我认为是解决方案! 一个新问题正在发生......不同的是,我创建了一个新问题。很奇怪...***.com/questions/28856883/…

以上是关于来自 Webview 的 Java 空指针异常的主要内容,如果未能解决你的问题,请参考以下文章

java中的空指针异常怎么解决

java hashmap空指针异常

java的equals提示空指针异常

带有空指针的 2D 指针数组 c++

java空指针异常:java.lang.NullPointException

Collectors.toMap空指针异常