clearApplicationUserData 减少应用程序的使用

12

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

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

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


2
你为什么要这样做? - portfoliobuilder
1
因为我想通过编程方式擦除我的应用程序的数据。这个方法在API中。我不能使用它吗?=) - androidevil
你应该将应用程序文件存储在已知路径下,需要时只需删除此文件夹即可。 - questioner
1
我有同样的问题,而且不是最小化,应用程序被关闭了。顺便说一下,我正在使用它来清除所有保存的设置,在测试版发布之间进行安装,因为我们不支持数据升级路径。 - markdb314
1
“clearApplicationUserData” 有返回值确实很奇怪。如果进程已经结束,你可能还能用它做什么呢? - tir38
显示剩余2条评论
2个回答

6

ActivityManager.clearApplicationUserData() 方法将清除您的应用程序中的所有数据,并直接杀死应用程序进程,而不会发出任何警告。我查阅了文档和源代码,似乎这并不是一个错误,而是被设计成这样的工作方式。我有以下一些猜测:

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

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


有趣的是,运行几秒钟后,我的FirebaseMessagingService实现中的onNewToken重写被执行了。你知道这个方法是否会使应用程序的服务保持运行状态吗? - AliAvci
根据Firebase文档链接,此服务注册了一个意图过滤器("com.google.firebase.MESSAGING_EVENT")。当您的应用程序完全关闭但接收到此类意图时,该服务将重新启动以处理它。希望这能帮助你@AliAvci。 - zz-m

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();
    }

1
如何以编程方式清除Android应用程序中的用户数据 - Yousha Aleayoub

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接