关于获取软件缓存信息和清除缓存信息
在methods开始使用这个 立即函数里面执行
// 获取缓存数据大小 在立即执行函数
formatSize() {
let that = this;
plus.cache.calculate(function(size) { 计算应用已使用的缓存数据大小
console.log(size) //size计算获取到的大小
let sizeCache = parseInt(size);
// console.log(sizeCache)
if (sizeCache == 0) {
that.fileSizeString = "0B";
} else if (sizeCache < 1024) {
that.fileSizeString = sizeCache + "B";
} else if (sizeCache < 1048576) {
that.fileSizeString = (sizeCache / 1024).toFixed(2) + "KB";
} else if (sizeCache < 1073741824) {
that.fileSizeString = (sizeCache / 1048576).toFixed(2) + "MB";
} else {
that.fileSizeString = (sizeCache / 1073741824).toFixed(2) + "GB";
}
});
console.log(this.fileSizeString)
},
下面这个是清除缓存
- 相关文档
- plus.io.resolveLocalFileSystemURL 通过URL参数获取目录对象或文件对象
- 递归删除其下的所有文件及子目录
- plus.android.invoke
- runtimeMainActivity: 获取应用主Activity实例对象
// 点击开始清除缓存
iosx() {
console.log('11111')
// this.showw = true
let that = this;
let os = plus.os.name;
if (os == 'Android') {
let main = plus.android.runtimeMainActivity();
let sdRoot = main.getCacheDir();
let files = plus.android.invoke(sdRoot, "listFiles");
let len = files.length;
for (let i = 0; i < len; i++) {
let filePath = '' + files[i]; // 没有找到合适的方法获取路径,这样写可以转成文件路径
plus.io.resolveLocalFileSystemURL(filePath, function(entry) {
if (entry.isDirectory) {
entry.removeRecursively(function(entry) { //递归删除其下的所有文件及子目录
uni.showToast({
title: '缓存清理完成',
duration: 2000
});
that.formatSize(); // 重新计算缓存
}, function(e) {
console.log(e.message)
});
} else {
entry.remove();
}
}, function(e) {
console.log('文件路径读取失败')
});
}
} else { // ios
plus.cache.clear(function() {
uni.showToast({
title: '缓存清理完成',
duration: 2000
});
that.formatSize();
});
}
},
注意:代码是模仿别人写的 效果是可以实现 关于清除逻辑哪里
plus.android.invoke(sdRoot, "listFiles");
plus.io.resolveLocalFileSystemURL
plus.android.runtimeMainActivity();
let sdRoot = main.getCacheDir();
let files = plus.android.invoke(sdRoot, "listFiles");
这里调用了啥
感觉不是很明白 有路过的老哥 希望可以帮忙指点一下