package com.shizhefei.task; /** * Task的缓存配置 * * @param <DATA> */ public interface ICacheConfig<DATA> { /** * * task的id,用于唯一标识task,相同的taskKey的task被执行会合并成同一个task执行,先执行的那个task运行,后面的task添加ICallback到task上进行回调 * * @param taskOrDataSource * @return */ String getTaskKey(Object taskOrDataSource); /** * 是否有用的缓存的数据 * 如果返回true,则task就不会被执行,直接返回缓存的data数据给ICallback,并调用onPostExecute Code.Success * 如果返回false,执行task * * @param taskOrDataSource ITask,IDataSource,IAsyncTask,IDataSource,IAsyncDataSource 这四种类型 * @param requestTime 请求的时间戳 * @param saveTime 保存data请求的时间戳 * @param data 缓存数据 * @return */ boolean isUsefulCacheData(Object taskOrDataSource, long requestTime, long saveTime, DATA data); /** * 是否将这个data保存下来 * 返回true的话,ICacheStore.saveCache 就会被调用 * 返回false的话,不保存 * * @param taskOrDataSource ITask,IDataSource,IAsyncTask,IDataSource,IAsyncDataSource 这四种类型 * @param requestTime 请求的时间戳 * @param saveTime 保存data请求的时间戳 * @param data 缓存数据 * @return */ boolean isNeedSave(Object taskOrDataSource, long requestTime, long saveTime, DATA data); }