如何修复由于挂起的MotionEvent导致的Android WebView崩溃

时间:2010-10-01 23:39:58

标签: android nullpointerexception android-webview

我的Android应用程序在操作期间随机发生此崩溃,我认为这是由于挂起的MotionEvent被调度到空对象,但不确定。

这是崩溃输出:

java.lang.NullPointerException
at android.webkit.BrowserFrame.getRequestInterceptor(BrowserFrame.java:1108)
at android.webkit.FrameLoader.handleRequestIntercept(FrameLoader.java:426)
at android.webkit.FrameLoader.handleHTTPLoad(FrameLoader.java:226)
at android.webkit.WebViewWorker.handleMessage(WebViewWorker.java:124)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:143)
at android.os.HandlerThread.run(HandlerThread.java:60)

我的Android应用程序手动创建自定义WebView,并将其添加到Activity.onCreate()方法中的ViewGroup,如下所示:

ViewGroup groupA = (ViewGroup)findViewById(R.id.frame_layout_rowA);
webViewRowA = new MyWebView(this);
groupA.addView(webViewRowA);

这样做的原因是能够到达WebView的构造函数,以便将 getApplicationContext()而不是 this 传递给构造函数,这是2.1中内存泄漏的解决方法。

我认为,问题是此活动经常重启。这会导致onStop(),onDestroy(),onCreate()等的正常链经常发生。

所以我的问题是,崩溃是否可能是因为MotionEvent被调度到附加到垃圾收集旧活动的MyWebView实例?例如,如果用户在此活动被回收之前点击了网页浏览中的某些内容?

另一件需要注意的事情是我在调用onDestroy()

后看到这些消息
/webviewglue(  436): nativeDestroy view: 0xd738d0

任何人可能提供的任何帮助或见解,将不胜感激。我一直在讨论这个问题一段时间了。

哦,还有一点要注意......这在Android OS 2.2中开始发生。我向Google提交了一个错误,但不确定这是他们的问题。

提前致谢。

1 个答案:

答案 0 :(得分:0)

Android市场每周给我360个关于此问题的报告。

问题是我的webview甚至没有动态创建。

我在网上找到了这个:https://code.google.com/p/android/issues/detail?id=11533

仍在等待回复。

看起来它与某些手机型号有关。你能复制一下这个问题吗?我从来没有能够。

由于 特斯