在停用帐户之前清除应用数据

时间:2014-02-22 09:27:28

标签: android sql database

我需要模拟设置 - >我的应用程序中的清除数据功能就在停用用户帐户之前。为此,我使用以下代码;

            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错误。但是如果用户杀死应用程序然后重新打开它,那么一切都只是预期的工作。可能是什么问题?

我忘了关闭某事吗?

1 个答案:

答案 0 :(得分:0)

在我看来,您忘记在代码中的某处关闭SQLiteDatabaseCursor。确保在删除数据库之前执行此操作,因为将来这些操作将引发SQLite磁盘I / O错误异常。