2015-04-15 2 views
8

Je souhaite effacer les données de mon application par programmation. J'ai trouvé la méthode clearApplicationUserData. Mais quand je l'exécute, l'application se minimise. Autrement dit, l'application va à l'arrière-plan, comme quand il est pressé le bouton d'accueil. Ceci est mon code:clearApplicationUserData minimise l'application

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

Il y a un moyen d'effacer les données à l'aide de cette méthode sans minimiser l'application?

+2

Pourquoi faites-vous cela? – portfoliobuilder

+1

Parce que je veux effacer les données de mon application par programmation. Cette méthode est dans l'API. Je ne peux pas l'utiliser? =) – androidevil

+0

Qu'entendez-vous par minimisation de l'application? –

Répondre

3

Méthode ActivityManager.clearApplicationUserData() efface toutes les données de votre application, et tuer le processus d'application directement sans aucun avertissement. Je vérifie la documentation et la source, il ne semble pas être un bug mais conçu pour fonctionner comme ça. J'ai quelques spéculations comme ci-dessous:

  1. Cette méthode est conçue pour réinitialiser complètement votre application. Peut-être que vous pouvez fournir à vos utilisateurs une option de réinitialisation complète.
  2. Cette méthode est conçue pour tester la commodité (vous pouvez réinitialiser l'application sans la réinstaller).

Si vous voulez implémenter votre propre méthode pour gérer les données de votre application. This answer peut-être utile.

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

^https://hrupin.com/2011/11/how-to-clear-user-data-in-your-android-application-programmatically –