全部产品

数据清理

更新时间:2019-09-09 15:07:50

自动清理的缓存目录

创建一个可以自动维护容量的缓存目录,通过 APPurgeableType 指定清空的逻辑,通过 size 指定缓存目录的大小。应用每次启动会在后台进程检查目录状态,并按需求删除文件。如果一个目录设置了容量上限,当达到上限时,会删除其中创建时间最老的文件,使目录恢复到1/2容量上限的使用情况。

  1. #import <Foundation/Foundation.h>
  2. typedef NS_ENUM(NSUInteger, APPurgeableType)
  3. {
  4. APPurgeableTypeManual = 0, // 当用户手动清除缓存时清空
  5. APPurgeableTypeThreeDays = 3, // 自动删除三天前的数据
  6. APPurgeableTypeOneWeek = 7, // 自动删除一周前的数据
  7. APPurgeableTypeTwoWeeks = 14, // 自动删除两周前的数据
  8. APPurgeableTypeOneMonth = 30, // 自动删除一个月前的数据
  9. };
  10. #ifdef __cplusplus
  11. extern "C" {
  12. #endif // __cplusplus
  13. /**
  14. * 根据用户的输入返回一个可被清理的存储路径,同时会自动判断目录是否存在,如果不存在会创建。
  15. *
  16. * @param userPath 用户指定的路径,比如之前使用"Documents/SomePath"来拼接,现在使用APPurgeableStoragePath(@"Documents/SomePath")获得路径即可。
  17. * @param type 指定自动清空的类型,可以是用户手动或每周,或每三天。
  18. * @param size 指定当尺寸达到多大时,清空较老的数据,单位MB。0表示不设置上限。
  19. *
  20. * @return 目标路径
  21. */
  22. NSString* APPurgeablePath(NSString* path);
  23. NSString* APPurgeablePathType(NSString* path, APPurgeableType type);
  24. NSString* APPurgeablePathTypeSize(NSString* path, APPurgeableType type, NSUInteger size /* MB */);
  25. /**
  26. * 清空并重置所有注册的目录
  27. */
  28. void ResetAllPurgeablePaths();
  29. #ifdef __cplusplus
  30. }
  31. #endif // __cplusplus

缓存清理接口

统一存储提供清理缓存的实现类,这个类从 PurgeableCache.plist 中读取清理任务,这个文件需要放在应用的 Main Bundle里。清理器会异步执行。回调函数总会在主线程调用,可以在里面进行 UI 展示与处理。

  1. #import <Foundation/Foundation.h>
  2. typedef NS_ENUM(NSUInteger, APCacheCleanPhase)
  3. {
  4. APCacheCleanPhasePreCalculating = 0, // 执行前扫描沙箱大小
  5. APCacheCleanPhaseCleaning, // 正在清理
  6. APCacheCleanPhasePostCalculating, // 执行完成扫描沙箱大小
  7. APCacheCleanPhaseDone, // 完成
  8. };
  9. @interface APUserCacheCleaner : NSObject
  10. /**
  11. * 异步执行清理。必须传一个回调方法。
  12. * 当phase返回APCacheCleanPhasePreCalculating,APCacheCleanPhaseCleaning,APCacheCleanPhasePostCalculating时,progress代表真实的进度。最大为1.0。
  13. * 当phase为APCacheCleanPhaseDone时,progress返回清理了多少MB的数据。
  14. *
  15. * @param callback 回调方法
  16. */
  17. + (void)execute:(void(^)(APCacheCleanPhase phase, float progress))callback;
  18. @end

PurgeableCache.plist 中可以定义两种类型的清理任务。image

Path 文件或目录的路径,只需要沙箱内的相对路径即可。

EntriesPath 为一个目录时,删除它下面的哪些子文件或目录,支持 * 进行通配。

Class 指定一个回调方法的定义类。

Selectors 调用 Class 类的哪些方法。注意,必须为类方法,不能为实例方法。