2 votes

react-native : Effacer le cache de l'intérieur de l'application de manière programmatique (par exemple via un bouton-clic)

Est-il possible d'implémenter une sorte de fonction "clear cache" dans React-Native afin que l'utilisateur puisse cliquer sur un bouton et que le cache de l'application soit effacé ?

Merci d'avance.

0voto

Sergey Dryganets Points 209

Quel type de cache voulez-vous nettoyer ? Un cache au niveau de l'application ? Si oui, créez le module natif react-native et implémentez la fonctionnalité dont vous avez besoin.

ou vous voulez faire la même chose avec : npm start -- --reset-cache ? C'est impossible à faire avec la boîte. Mais vous pourriez étendre le packager react-native et ajouter une option de menu développeur pour le faire.

0voto

Tushki Points 11

Vous pouvez utiliser ce module https://github.com/midas-gufei/react-native-clear-app-cache

ou implémenter la suppression du cache séparément en natif selon les besoins de votre projet (comme mon projet qui avait juste besoin de se débarrasser des mp4 et des pdfs). Les ressources en cache peuvent être trouvées à ios : NSTemporaryDirectory()

  NSError *error;

  NSArray *directoryItems1 = [[NSFileManager defaultManager] contentsOfDirectoryAtPath:NSTemporaryDirectory() error:&error];
  NSLog(@"%@, %@", directoryItems1, [directoryItems1 objectAtIndex:0]);

  if ([[NSFileManager defaultManager] fileExistsAtPath:[directoryItems1 objectAtIndex:0]])  //Does directory exist?
  {
    if (![[NSFileManager defaultManager] removeItemAtPath:[directoryItems1 objectAtIndex:0] error:&error])  //Delete it
    {
      NSLog(@"Delete directory error: %@", error);
    }
  }

Android : `

public void clearApplicationData()
    {
        File cache = getCacheDir();
        File appDir = new File(cache.getParent());
        if (appDir.exists()) {
            String[] test =  cache.list();
            Log.d("before", Arrays.toString(test));
            for (String s : test) {
                if (s.contains(".pdf") || s.contains(".mp4")) {
                    deleteDir(new File(cache, s));
                    Log.i("TAG", "**************** File /data/data/APP_PACKAGE/" + s + " DELETED *******************");
                }
            }
            Log.d("After delete", Arrays.toString(cache.list()));
        }
    }

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

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X