12

我想以编程方式擦除我的应用程序的数据。我找到了clearApplicationUserData方法。但是当我运行它时,应用程序会自行最小化。也就是说,应用程序进入后台,就像按下主页按钮时一样。这是我的代码:

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
    ((ActivityManager)context.getSystemService(Context.ACTIVITY_SERVICE))
                        .clearApplicationUserData();
} else {
        // TODO
}

有什么方法可以在不最小化应用程序的情况下使用这种方法擦除数据?

4

2 回答 2

6

方法ActivityManager.clearApplicationUserData()将清除您应用程序的所有数据,并直接终止应用程序进程而不会发出任何警告。我检查了文档和源代码,它似乎不是一个错误,而是设计为这样工作的。我有一些推测如下:

  1. 此方法旨在完全重置您的应用程序。也许您可以为您的用户提供一个完全重置的选项。
  2. 此方法是为测试方便性而设计的(您可以在不重新安装的情况下重置应用程序)。

如果您想实现自己的方法来管理应用程序的数据。这个答案可能会有所帮助。

于 2016-05-07T08:22:32.833 回答
1
public void clearApplicationData() {
        File cache = getCacheDir();
        File appDir = new File(cache.getParent());
        if (appDir.exists()) {
            String[] children = appDir.list();
            for (String s : children) {
                if (!s.equals("lib")) {
                    deleteDir(new File(appDir, s));

                }
            }
        }
    }
public static 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();
    }
于 2016-05-07T08:26:19.500 回答