Android上的Webview数据库损坏

时间:2011-09-21 21:25:06

标签: android database exception webview

我正在开发一款使用webview显示网页的Android应用。我的大多数代码都与webview相关。我的主要活动包含一个显示特定网站的webview。

当我的webview.db损坏时,我正在尝试阻止错误。我知道这不是常见情况,但我想确保我的应用程序不会崩溃。

尝试访问webview数据库时 损坏将导致崩溃。

我添加了方法setUncaughtExceptionHandler来处理异常。我可以捕获这个例子但是当我试图重新启动我的应用程序时,webview永远不会完成加载。

我尝试使用以下代码“重启”我的应用:

     Intent i = new Intent(context, Error.class);
                 i.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
                 i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
                 context.startActivity(i);

我的最后一次尝试失败,然后我添加了一些显示错误消息的代码,删除了webview数据库并关闭了应用程序。

    AlertDialog alertDialog = new AlertDialog.Builder(
                    DiscoverMobile.this).create();
            alertDialog.setTitle("Error");
            alertDialog.setMessage("Application files have been deleted or corrupted.  The app will close to fix this issue.  You can restart the app later");
            alertDialog.setButton("OK",
                    new DialogInterface.OnClickListener() {
                        public void onClick(DialogInterface dialog,
                                int which) {


                            webview.getContext().deleteDatabase(
                                    "webview.db");
                            webview.getContext().deleteDatabase(
                                    "webviewCache.db");
                            WebViewDatabase webViewDB = WebViewDatabase
                                    .getInstance(getBaseContext());

                            System.exit(0);
                        }
                    });
            alertDialog.show();

这可能是一个很好的解决方案吗?

1 个答案:

答案 0 :(得分:1)

Override
public void onPageFinished(WebView view, String url) {
    super.onPageFinished(view, url);
    view.clearCache(true);
}

也许你试过这个,但也可能将WebView Cache的大小设置得很小。我不确定0是否可行,所以可能是1:

webview.getSettings().setAppCacheMaxSize(1);