clearApplicationUserData минимизирует приложение
Я хочу стереть данные моего приложения программно. Я нашел метод clearApplicationUserData. Но когда я запускаю его, приложение минимизирует себя. То есть приложение переходит в фоновый режим, как при нажатии кнопки "Домой". Это мой код:
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
((ActivityManager)context.getSystemService(Context.ACTIVITY_SERVICE))
.clearApplicationUserData();
} else {
// TODO
}
Есть какой-то способ стереть данные, используя этот метод, не свернув приложение?
2 ответа
Метод ActivityManager.clearApplicationUserData() удалит все данные вашего приложения и уничтожит процесс приложения напрямую без каких-либо предупреждений. Я проверяю документацию и исходные тексты, кажется, что это не ошибка, а предназначена для такой работы. У меня есть некоторые предположения, как показано ниже:
- Этот метод предназначен для полной перезагрузки вашего приложения. Может быть, вы можете предоставить своим пользователям полностью сбросить настройки.
- Этот метод предназначен для проверки удобства (вы можете сбросить приложение, не переустанавливая его).
Если вы хотите реализовать свой собственный метод для управления данными вашего приложения. Этот ответ может быть полезным.
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();
}