您的位置:首页 > 移动开发

onDestory清除webview报错

2016-02-02 16:51 183 查看
今天在调试代码的时候,有一段关于webview的代码,即退出Fragment的时候清除webview,这时候在其他手机上是没有问题的,但是在三星Grand2中报错:

[code]java.lang.Throwable: Error: WebView.destroy() called while still attached!
at android.webkit.WebViewClassic.destroy(WebViewClassic.java:4173)
at android.webkit.WebView.destroy(WebView.java:707)
at com.youyou.uuelectric.renter.UI.web.H5Fragment.onDestroyView(H5Fragment.java:202)
at android.support.v4.app.Fragment.performDestroyView(Fragment.java:2167)
at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1141)
at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1248)
at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1230)
at android.support.v4.app.FragmentManagerImpl.dispatchDestroy(FragmentManager.java:2079)
at android.support.v4.app.FragmentController.dispatchDestroy(FragmentController.java:235)
 at android.support.v4.app.FragmentActivity.onDestroy(FragmentActivity.java:326)
at android.support.v7.app.AppCompatActivity.onDestroy(AppCompatActivity.java:161)
at com.youyou.uuelectric.renter.UI.base.BaseActivity.onDestroy(BaseActivity.java:136)
at android.app.Activity.performDestroy(Activity.java:5543)
at android.app.Instrumentation.callActivityOnDestroy(Instrumentation.java:1134)
at android.app.ActivityThread.performDestroyActivity(ActivityThread.java:3637)
at android.app.ActivityThread.handleDestroyActivity(ActivityThread.java:3672)
at android.app.ActivityThread.access$1300(ActivityThread.java:168)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1382)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:176)
at android.app.ActivityThread.main(ActivityThread.java:5493)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:525)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1225)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1041)
at dalvik.system.NativeStart.main(Native Method)


程序也没有异常退出之类的动作,清除webview的代码是这样写的:

[code]@Override
    public void onDestroyView() {
        super.onDestroyView();
        mWebView.removeAllViews();
        mWebView.destroy();
    }


这个错误大概的意思是:当你结束webview的时候,webview还依附在其父控件之下,应当在调用webview.destory()方法之前接触他们之间的依附关系,所以代码中应该这样实现:

[code]@Override
    public void onDestroyView() {
        super.onDestroyView();
        swipeRefreshLayout.removeView(mWebView);
        mWebView.removeAllViews();
        mWebView.destroy();
    }
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: