分享

webview 滚动时返回,APP 崩溃 | 学步园

 dmw_zgl 2015-03-05

崩溃现象:

webview滚动时,按返回键,系统崩溃,如果不是滚动的时候退出,程序正常。

崩溃log:

10-19 11:49:13.051: E/AndroidRuntime(21972): FATAL EXCEPTION: main
10-19 11:49:13.051: E/AndroidRuntime(21972): java.lang.NullPointerException
10-19 11:49:13.051: E/AndroidRuntime(21972): 	at android.webkit.WebView.sendOurVisibleRect(WebView.java:2472)
10-19 11:49:13.051: E/AndroidRuntime(21972): 	at android.webkit.WebView.onScrollChanged(WebView.java:5060)
10-19 11:49:13.051: E/AndroidRuntime(21972): 	at android.view.View.scrollTo(View.java:5066)
10-19 11:49:13.051: E/AndroidRuntime(21972): 	at android.webkit.WebView.onOverScrolled(WebView.java:2691)
10-19 11:49:13.051: E/AndroidRuntime(21972): 	at android.view.View.overScrollBy(View.java:8931)
10-19 11:49:13.051: E/AndroidRuntime(21972): 	at android.webkit.WebView.computeScroll(WebView.java:3110)
10-19 11:49:13.051: E/AndroidRuntime(21972): 	at android.view.ViewGroup.drawChild(ViewGroup.java:1593)
10-19 11:49:13.051: E/AndroidRuntime(21972): 	at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1404)
10-19 11:49:13.051: E/AndroidRuntime(21972): 	at android.view.View.draw(View.java:6933)
10-19 11:49:13.051: E/AndroidRuntime(21972): 	at android.view.ViewGroup.drawChild(ViewGroup.java:1677)
10-19 11:49:13.051: E/AndroidRuntime(21972): 	at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1404)
10-19 11:49:13.051: E/AndroidRuntime(21972): 	at android.view.View.draw(View.java:6933)
10-19 11:49:13.051: E/AndroidRuntime(21972): 	at android.widget.FrameLayout.draw(FrameLayout.java:388)
10-19 11:49:13.051: E/AndroidRuntime(21972): 	at android.view.View.buildDrawingCache(View.java:6692)
10-19 11:49:13.051: E/AndroidRuntime(21972): 	at android.view.ViewGroup.onAnimationStart(ViewGroup.java:1290)
10-19 11:49:13.051: E/AndroidRuntime(21972): 	at android.view.ViewGroup.drawChild(ViewGroup.java:1536)
10-19 11:49:13.051: E/AndroidRuntime(21972): 	at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1423)
10-19 11:49:13.051: E/AndroidRuntime(21972): 	at android.view.ViewGroup.drawChild(ViewGroup.java:1675)
10-19 11:49:13.051: E/AndroidRuntime(21972): 	at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1404)
10-19 11:49:13.051: E/AndroidRuntime(21972): 	at android.view.View.draw(View.java:6933)
10-19 11:49:13.051: E/AndroidRuntime(21972): 	at android.widget.FrameLayout.draw(FrameLayout.java:388)
10-19 11:49:13.051: E/AndroidRuntime(21972): 	at android.view.ViewGroup.drawChild(ViewGroup.java:1677)
10-19 11:49:13.051: E/AndroidRuntime(21972): 	at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1404)
10-19 11:49:13.051: E/AndroidRuntime(21972): 	at android.view.ViewGroup.drawChild(ViewGroup.java:1675)
10-19 11:49:13.051: E/AndroidRuntime(21972): 	at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1404)
10-19 11:49:13.051: E/AndroidRuntime(21972): 	at android.view.ViewGroup.drawChild(ViewGroup.java:1675)
10-19 11:49:13.051: E/AndroidRuntime(21972): 	at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1404)
10-19 11:49:13.051: E/AndroidRuntime(21972): 	at android.view.ViewGroup.drawChild(ViewGroup.java:1675)
10-19 11:49:13.051: E/AndroidRuntime(21972): 	at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1404)
10-19 11:49:13.051: E/AndroidRuntime(21972): 	at android.view.ViewGroup.drawChild(ViewGroup.java:1675)
10-19 11:49:13.051: E/AndroidRuntime(21972): 	at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1404)
10-19 11:49:13.051: E/AndroidRuntime(21972): 	at android.view.View.draw(View.java:6933)
10-19 11:49:13.051: E/AndroidRuntime(21972): 	at android.widget.FrameLayout.draw(FrameLayout.java:388)
10-19 11:49:13.051: E/AndroidRuntime(21972): 	at android.view.ViewGroup.drawChild(ViewGroup.java:1677)
10-19 11:49:13.051: E/AndroidRuntime(21972): 	at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1404)
10-19 11:49:13.051: E/AndroidRuntime(21972): 	at android.view.View.draw(View.java:6933)
10-19 11:49:13.051: E/AndroidRuntime(21972): 	at android.widget.FrameLayout.draw(FrameLayout.java:388)
10-19 11:49:13.051: E/AndroidRuntime(21972): 	at com.android.internal.policy.impl.PhoneWindow$DecorView.draw(PhoneWindow.java:1950)
10-19 11:49:13.051: E/AndroidRuntime(21972): 	at android.view.ViewRoot.draw(ViewRoot.java:1563)
10-19 11:49:13.051: E/AndroidRuntime(21972): 	at android.view.ViewRoot.performTraversals(ViewRoot.java:1299)
10-19 11:49:13.051: E/AndroidRuntime(21972): 	at android.view.ViewRoot.handleMessage(ViewRoot.java:1906)
10-19 11:49:13.051: E/AndroidRuntime(21972): 	at android.os.Handler.dispatchMessage(Handler.java:130)
10-19 11:49:13.051: E/AndroidRuntime(21972): 	at android.os.Looper.loop(SourceFile:351)
10-19 11:49:13.051: E/AndroidRuntime(21972): 	at android.app.ActivityThread.main(ActivityThread.java:3815)
10-19 11:49:13.051: E/AndroidRuntime(21972): 	at java.lang.reflect.Method.invokeNative(Native Method)
10-19 11:49:13.051: E/AndroidRuntime(21972): 	at java.lang.reflect.Method.invoke(Method.java:538)
10-19 11:49:13.051: E/AndroidRuntime(21972): 	at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:901)
10-19 11:49:13.051: E/AndroidRuntime(21972): 	at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:659)
10-19 11:49:13.051: E/AndroidRuntime(21972): 	at dalvik.system.NativeStart.main(Native Method)

在滚动的时候调用的时候,出现某个对象突然为null。

说明,我在返回事件中销毁了一些东西:

    @Override
    public void onBackPressed() {
        if (webView.canGoBack()) {
            webView.goBack();
        } else {
            webView.destroy();
            group.onBackPressedAction();
            back = true;
        }
    }

只要把webview.destory();删掉即可,就不会出现上面的问题了。

将webview.destory();放在activity的onDestroy里面

    @Override
    protected void onDestroy() {
        super.onDestroy();
        webView.destroy();
    }

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多