val builder = OkHttpClient.Builder().apply {
//缓存策略开始 ----------------
cache(
Cache(
File(context.cacheDir, "http_cache"),
20L * 1024L * 1024L
)
)
addNetworkInterceptor { chain ->
val request = chain.request().also {
if (isNetworkAvailable(context)) {
val cacheControl = CacheControl.Builder()
.maxAge(0, TimeUnit.SECONDS)
.maxStale(365, TimeUnit.DAYS)
.build()
it.newBuilder()
.cacheControl(cacheControl)
.build()
}
}
chain.proceed(request).apply {
newBuilder()
.removeHeader("Pragma")
.removeHeader("Cache-Control").run {
if (isNetworkAvailable(context)) {
header("Cache-Control", "public, max-age=" + (60))
} else {
header("Cache-Control", "public, only-if-cached, max-stale=" + (60*60*24*28))
}
}
.build()
}
}
//缓存策略结束 ----------------
}
val okHttpClient = builder.build()
fun isNetworkAvailable(context: Context): Boolean {
val cm = context
.getSystemService(Context.CONNECTIVITY_SERVICE) as ConnectivityManager
val current = cm.activeNetworkInfo ?: return false
return current.isAvailable
}
记下来方便以后复制用的....