react-native:以编程方式从应用程序内部清除缓存(例如,通过按钮单击)

标签 react-native

是否可以在 React-Native 中实现某种“清除缓存”功能,以便用户可以单击按钮并清除应用程序缓存?

提前致谢。

最佳答案

你可以使用这个模块https://github.com/midas-gufei/react-native-clear-app-cache

或根据您的项目要求在 native 中单独实现缓存删除(就像我的项目只需要摆脱 mp4s 和 pdfs)
缓存资源可以在以下位置找到:
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);
    }
  }

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

关于react-native:以编程方式从应用程序内部清除缓存(例如,通过按钮单击),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41614604/

相关文章:

javascript - 将值隐藏为 Int

javascript - 世博会命令抛出 "Error: Cannot find module ' minizlib'"

android - react-native run-android build 在没有红屏的情况下启动时崩溃

react-native - React Native Web Expo 的 WebView 替代方案

javascript - 用户登录身份验证如何与 React Native 一起工作?

ios - React Native 版本不匹配 0.59.1 > 0.61.2

javascript - .map() 是否足够,或者我应该在 React Native 中使用 ListView(或 FlatList)?

javascript - React( native )导航切换搜索栏

json - 如何在 React Native 中将 this.props.key 设置到 Firebase 数据库引用中

javascript - React-Native, Stripe 卡元素未显示实时 API key