是否可以在React-Native中实现某种“清除缓存”功能,以便用户可以单击一个按钮并清除应用程序缓存?
提前致谢。
答案 0 :(得分:0)
您想要清理哪种缓存? 一些应用程序级缓存? 如果是这样 - 创建react-native本机模块并实现您需要的功能。
或者你想要做同样的事情: npm start - --reset-cache? 开箱即用是不可能的。 但是您可以扩展react-native packager并添加开发人员菜单选项。
答案 1 :(得分:0)
您可以使用此模块https://github.com/midas-gufei/react-native-clear-app-cache
或根据项目的要求在本机中单独实现缓存删除(就像我的项目只需要摆脱mp4s和pdf) 缓存资源可在以下位置找到: 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();
}`