是否可以在 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/