我需要模拟设置 - >我的应用程序中的清除数据功能就在停用用户帐户之前。为此,我使用以下代码;
private boolean clearCacheData() {
File cache = getCacheDir();
File appDir = new File(cache.getParent());
if (appDir.exists()) {
String[] children = appDir.list();
boolean result = true;
for (String s : children) {
if (!s.equals("lib")) {
result &= deleteDir(new File(appDir, s));
Log.i("TAG",
"**************** File /data/data/APP_PACKAGE/"
+ s + " DELETED *******************");
}
}
return result;
}
return false;
}
private boolean deleteDir(File dir) {
if (dir != null && dir.isDirectory()) {
String[] children = dir.list();
for (int i = 0; i < children.length; i++) {
boolean success = deleteDir(new File(dir, children[i]));
if (!success) {
return false;
}
}
}
return dir.delete();
}
}
当我这样做时,我还会再次打开我的欢迎页面,以便让用户更改以重新激活帐户。如果用户继续重新激活我的应用程序崩溃并提供Sq-lite
磁盘I / O错误。但是如果用户杀死应用程序然后重新打开它,那么一切都只是预期的工作。可能是什么问题?
我忘了关闭某事吗?
答案 0 :(得分:0)
在我看来,您忘记在代码中的某处关闭SQLiteDatabase
或Cursor
。确保在删除数据库之前执行此操作,因为将来这些操作将引发SQLite磁盘I / O错误异常。