我试图删除我的离线模式(在cache.manifest中定义)文件而不删除任何WebSQL数据库或本地存储数据。
我一直在尝试删除缓存文件,并在stackoverflow和其他地方使用相关答案,使用以下方法的答案删除WebView缓存:
Android Webview - Completely Clear the Cache
表示手动删除Context.getCacheDir();
FWIW中的文件,我注意到使用更简单的方法(未被接受的答案注明)的结果相同:WebView.clearCache(true);
。此方法会删除未包含在cache.manifest中的缓存文件。
我还使用了其他多个提到
的地方描述的技术deleteDatabase("webview.db");
deleteDatabase("webviewCache.db");
对我的离线模式文件没有影响。我已经可以验证地删除了webview.db,但奇怪的是我从未见过使用Context.databaseList()
的webviewCache.db文件。
(顺便说一句,我对删除webview.db表示怀疑,因为我在删除webview.db后发现崩溃,并在下次打开应用程序时尝试将文本粘贴到输入字段中。似乎需要对于某些应用来说,围绕这个技巧进行一些防御性编程,至少
android.database.sqlite.SQLiteException: no such table: formurl: , while compiling: SELECT _id FROM formurl WHERE (url == ?)
at android.database.sqlite.SQLiteCompiledSql.native_compile(Native Method)
at android.database.sqlite.SQLiteCompiledSql.<init>(SQLiteCompiledSql.java:64)
at android.database.sqlite.SQLiteProgram.compileSql(SQLiteProgram.java:146)
at android.database.sqlite.SQLiteProgram.compileAndbindAllArgs(SQLiteProgram.java:367)
at android.database.sqlite.SQLiteProgram.<init>(SQLiteProgram.java:130)
at android.database.sqlite.SQLiteProgram.<init>(SQLiteProgram.java:94)
at android.database.sqlite.SQLiteQuery.<init>(SQLiteQuery.java:46)
at android.database.sqlite.SQLiteDirectCursorDriver.query(SQLiteDirectCursorDriver.java:47)
at android.database.sqlite.SQLiteDatabase.rawQueryWithFactory(SQLiteDatabase.java:1539)
at android.database.sqlite.SQLiteDatabase.queryWithFactory(SQLiteDatabase.java:1419)
at android.database.sqlite.SQLiteDatabase.query(SQLiteDatabase.java:1375)
at android.database.sqlite.SQLiteDatabase.query(SQLiteDatabase.java:1455)
at android.webkit.WebViewDatabase.getFormData(WebViewDatabase.java:1150)
at android.webkit.WebView$RequestFormData.run(WebView.java:4493)
at java.lang.Thread.run(Thread.java:1020)
)
我也使用过&#34;清除缓存&#34;应用程序设置页面中的按钮,对脱机模式文件没有影响。 &#34;清除数据&#34;应用程序设置页面上的按钮确实删除了脱机模式文件,但也删除了其他所有文件,包括我的WebSQL数据库和本地存储密钥。我也不知道如何模仿清晰的数据&#34;按编程方式按钮,虽然不是我正在寻找的答案,但也很有用。
重申一下,重点是这些方法似乎都不够。我想要做的是删除我的离线模式缓存JS / HTML / CSS,并保留所有通过Android WebView创建的WebSQL数据库文件和本地存储密钥。
我正在观看我的网络服务器日志,因此我可以准确判断我的应用程序何时请求文件。