/**
* 清理缓存的函数,根据不同的操作系统执行不同的缓存清理逻辑
*/
const clearCache = () => {
// 获取当前操作系统的名称
let os = plus.os.name;
// 判断当前操作系统是否为 Android
if (os == 'Android') {
// 获取 Android 运行时的主 Activity
let main = plus.android.runtimeMainActivity();
// 获取主 Activity 的缓存目录
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) {
// 重新计算缓存大小
getCacheSize();
}, function(e) {
// 打印删除文件夹失败的错误信息
console.log(e.message)
});
} else {
// 如果是文件,直接删除该文件
entry.remove();
}
}, function(e) {
// 打印文件路径读取失败的信息
console.log('文件路径读取失败')
});
}
// 显示缓存清理完成的提示信息
uni.showToast({
title: '缓存清理完成',
duration: 2000
});
} else { // iOS
// 清理 iOS 系统的缓存
plus.cache.clear(function() {
// 显示缓存清理完成的提示信息
uni.showToast({
title: '缓存清理完成',
duration: 2000
});
// 重新计算缓存大小
getCacheSize();
});
}
}
/**
* 计算并显示当前缓存大小的函数
*/
function getCacheSize () {
// 调用 plus.cache.calculate 方法计算缓存大小
plus.cache.calculate(size => {
// 如果缓存大小小于 1024 字节,以字节为单位显示
if (size < 1024) {
cacheSize.value = size + 'B';
}
// 如果缓存大小大于等于 1KB 且小于 1MB,以 KB 为单位显示,保留两位小数
else if (size / 1024 >= 1 && size / 1024 / 1024 < 1) {
cacheSize.value = Math.floor((size / 1024) * 100) / 100 + 'KB';
}
// 如果缓存大小大于等于 1MB,以 MB 为单位显示,保留两位小数
else if (size / 1024 / 1024 >= 1) {
cacheSize.value = Math.floor((size / 1024 / 1024) * 100) / 100 + 'M';
}
// 打印当前计算得到的缓存大小
console.log('------------size', cacheSize.value)
});
}