使用 OkHttp 创建一个缓存拦截器,以确保无论网络状态如何,都能优先获取缓存的数据。
1. 创建拦截器
首先,我们需要创建一个拦截器,用于处理请求和响应的缓存逻辑:
import okhttp3.Interceptor;
import okhttp3.Request;
import okhttp3.Response;
import java.io.IOException;
public class CacheInterceptor implements Interceptor {
@Override
public Response intercept(Chain chain) throws IOException {
Request request = chain.request();
// 先尝试从缓存中获取数据
Response response = chain.proceed(request);
// 设置缓存控制头
int maxAge = 60; // 缓存有效期为60秒
return response.newBuilder()
.removeHeader("Pragma") // 清除头信息
.removeHeader("Cache-Control")
.header("Cache-Control", "public, max-age=" + maxAge)
.build();
}
}
2. 设置 OkHttpClient
接下来,我们需要将这个拦截器添加到 OkHttpClient 中,并设置缓存:
import okhttp3.Cache;
import okhttp3.OkHttpClient;
import java.io.Fil