【问题标题】:clearApplicationUserData minimizes the appclearApplicationUserData 最小化应用程序
【发布时间】:2015-04-15 19:59:59
【问题描述】:

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

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

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

【问题讨论】:

  • 你为什么要这样做?
  • 因为我想以编程方式擦除我的应用程序的数据。此方法在 API 中。我不能用吗? =)
  • 应用最小化是什么意思?
  • 我有同样的问题,不是最小化,应用程序正在关闭。 FWIW 我正在使用它来清除安装 beta 版本之间的所有保存设置,因为我们不支持数据升级路径。
  • 奇怪的是clearApplicationUserData 有一个返回值。如果这个过程消失了,你能用它做什么?

标签: android activity-manager


【解决方案1】:

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

  1. 此方法旨在完全重置您的应用程序。也许您可以为您的用户提供一个完全重置的选项。
  2. 此方法旨在测试是否方便(无需重新安装即可重置应用)。

如果您想实现自己的方法来管理应用的数据。 This answer 或许有帮助。

【讨论】:

  • 有趣的是,在运行了几秒钟之后,我的FirebaseMessagingService 实现的onNewToken 覆盖被执行了。你知道这个方法是否能让应用的服务保持运行吗?
  • 正如 firebase 文档所解释的那样。link 此服务注册了一个意图过滤器(“com.google.firebase.MESSAGING_EVENT”)。当您的应用完全关闭但随后重新接收这种意图时,该服务将重新启动以处理它。希望这会帮助你@AliAvci。
【解决方案2】:
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();
    }

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-08-15
  • 2016-03-11
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多