Skip to content

cleanUpExpiredTemporaryFiles:start:progress:completion:

清理过期临时文件

cleanUpExpiredTemporaryFiles:start:progress:completion:SUDRT 协议中的一个实例方法。它用于定期维护小游戏的运行环境,清理由于下载、缓存或运行产生的陈旧文件。通过设定时间阈值,开发者可以平衡“加载速度”(保留缓存)与“存储空间”(释放容量)之间的矛盾。


方法声明

objectivec
/**
 * 清理过期的临时文件。
 * @param keepTimeInMinute 文件保留时长(单位:分钟)。早于此时间创建/访问的文件将被视为过期。
 * @param start 任务开始时的回调。
 * @param progress 任务执行中的进度回调,提供当前处理的文件路径及错误信息。
 * @param completion 任务整体完成后的回调。
 */
- (void)cleanUpExpiredTemporaryFiles:(NSInteger)keepTimeInMinute
                               start:(nullable void (^)(void))start
                            progress:(nullable void (^)(NSString *path, NSError * _Nullable error))progress
                          completion:(nullable void (^)(NSError * _Nullable error))completion;

参数说明

参数名类型描述
keepTimeInMinuteNSInteger过期阈值:例如传入 1440 则清理 24 小时前的文件。
startBlock起始钩子:用于在 UI 上显示“清理中...”的加载状态。
progressBlock流式进度:每成功删除一个文件或遇到权限问题时触发。
completionBlock终点钩子:用于关闭清理动画或上报清理结果。

运行行为

  1. 磁盘遍历:引擎会扫描 SUDRT_KEY_RUNTIME_STORAGE_PATH_CACHE 路径下的所有子目录。
  2. 时间对比:检查每个文件的“最后修改时间”或“创建时间”,将其与当前系统时间进行差值计算。
  3. 原子删除:符合条件的文件将被物理删除,此过程不可逆。
  4. IO 控制:该任务通常在后台线程执行,以避免阻塞 App 的主线程(UI 线程)。

代码示例

在 App 启动后的闲时阶段执行清理工作:

objectivec
// 清理超过 3 天(4320 分钟)的临时缓存
[self.sdkInstance cleanUpExpiredTemporaryFiles:4320
    start:^{
        NSLog(@"[SUD] 开始清理磁盘空间...");
    }
    progress:^(NSString *path, NSError *error) {
        if (error) {
            NSLog(@"[SUD] 清理失败: %@, 原因: %@", path, error.localizedDescription);
        } else {
            NSLog(@"[SUD] 已删除陈旧文件: %@", path);
        }
    }
    completion:^(NSError *error) {
        if (!error) {
            NSLog(@"[SUD] 磁盘清理任务圆满完成!");
        }
    }];

注意事项

  • 频率建议:不建议高频调用。通常在 App 每次启动时,或者检测到用户存储空间低于 200MB 时触发一次即可。
  • 避开对局:如果用户正在进行激烈的游戏对局,务必避免调用此方法,或调用 cancelCleanUp 中断它,以免产生 IO 抖动导致游戏掉帧。
  • 白名单保护:SDK 内部通常会自动保护正在运行的游戏所需的必要资源包,该方法主要针对的是临时下载的图片、日志及不再使用的 WPK 解压副本。