Я разрабатываю приложение для Android, которое использует веб-просмотр для отображения веб-страницы.Большая часть моего кода связана с веб-просмотром.Моя основная деятельность содержит веб-просмотр, который отображает определенный веб-сайт.
Я пытаюсь предотвратить ошибку, когда мой webview.db поврежден.Я знаю, что это не обычная ситуация, но я хотел бы убедиться, что мое приложение не будет аварийно завершено.
Попытка получить доступ к базе данных веб-просмотра, если она была повреждена, приведет к сбою.
Я добавил метод setUncaughtExceptionHandler для обработки исключения.Я могу поймать исключение, но когда я попытался перезапустить мое приложение, веб-просмотр никогда не завершает загрузку.
Я попробовал следующий код, чтобы «перезапустить» мое приложение:
Intent i = new Intent(context, Error.class);
i.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(i);
Моя последняя попытка былабезуспешно, затем я добавил код, который отображает сообщение об ошибке, удаляет базы данных веб-просмотра и закрывает приложение.
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();
Может ли это быть хорошим решением?