2015-04-15 19 views
8

Desidero cancellare i dati della mia app in modo programmatico. Ho trovato il metodo clearApplicationUserData. Ma quando lo eseguo, l'app si minimizza. Ovvero, l'app passa allo sfondo, ad esempio quando viene premuto il pulsante Home. Questo è il mio codice:clearApplicationUserData minimizza l'app

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

C'è qualche modo per cancellare i dati che utilizzano questo metodo senza minimizzare l'applicazione?

+2

Perché stai facendo questo? – portfoliobuilder

+1

Perché voglio cancellare i dati della mia app in modo programmatico. Questo metodo è nell'API. Non posso usarlo? =) – androidevil

+0

Che cosa intendi per minimizzazione dell'app? –

risposta

3

Metodo ActivityManager.clearApplicationUserData() cancellerà tutti i dati dell'app, e uccidere il processo di applicazione direttamente senza avvertimenti. Controllo la documentazione e la fonte, non sembra un bug ma progettato per funzionare in questo modo. Ho alcune speculazioni come di seguito:

  1. Questo metodo è progettato per ripristinare completamente l'applicazione. Forse puoi fornire ai tuoi utenti un'opzione di reimpostazione completa.
  2. Questo metodo è progettato per testare la convenienza (è possibile ripristinare l'app senza reinstallarla).

Se si desidera implementare il proprio metodo per gestire i dati dell'app. This answer forse 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 –

Problemi correlati