package com.example.myapplication; import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.util.Log; import android.widget.ImageView; import java.io.File; import java.io.IOException; import java.util.concurrent.TimeUnit; import okhttp3.Cache; import okhttp3.CacheControl; import okhttp3.Call; import okhttp3.Callback; import okhttp3.OkHttpClient; import okhttp3.Request; import okhttp3.RequestBody; import okhttp3.Response; public class MainActivity extends AppCompatActivity { private OkHttpClient mOkHttpClient; private ImageView image; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); image = (ImageView) findViewById(R.id.image); //initData(); initCache(); } private void initCache() { File cacheDir = new File(this.getCacheDir(), "zhangphilcache"); Cache mCache = new Cache(cacheDir, 8 * 1024 * 1024); //8M缓存空间 OkHttpClient.Builder mBuilder = new OkHttpClient.Builder(); /**通过设置 cachecatrooll 超时重定向 * * */ mOkHttpClient = mBuilder .connectTimeout(10, TimeUnit.SECONDS) //连接超时阈值 .writeTimeout(10, TimeUnit.SECONDS) //写超时阈值 .readTimeout(10, TimeUnit.SECONDS) //读超时阈值 .retryOnConnectionFailure(true) //当失败后重试 .cache(mCache) .build(); String url = "https://www.baidu.com/img/bd_logo1.png"; CacheControl mCacheControl = new CacheControl.Builder() .noTransform() .maxAge(10, TimeUnit.SECONDS) //缓存有效期时长 .build(); Request mRequest = new Request.Builder() .url(url) .cacheControl(mCacheControl) .build(); mOkHttpClient.newCall(mRequest).enqueue(new Callback() { @Override public void onFailure(Call call, IOException e) { } @Override public void onResponse(Call call, Response response) throws IOException { if (response.isSuccessful()) { byte[] bytes = response.body().bytes(); final Bitmap bmp = BitmapFactory.decodeByteArray(bytes, 0, bytes.length); runOnUiThread(new Runnable() { @Override public void run() { image.setImageBitmap(bmp); } }); } } }); } private void initData() { OkHttpClient okHttpClient = new OkHttpClient(); Request.Builder builder = new Request.Builder(); //RequestBody requestBody = RequestBody.; Request build = new Request.Builder().url("https://xl06.xyz/").build(); okHttpClient.newCall(build).enqueue(new Callback() { @Override public void onFailure(Call call, IOException e) { } @Override public void onResponse(Call call, Response response) throws IOException { String string = response.body().string(); Log.d("--",string); } }); } @Override protected void onDestroy() { super.onDestroy(); //取消所有Okhttp的网络请求 mOkHttpClient.dispatcher().cancelAll(); } }
CacheControl缓存
最新推荐文章于 2024-03-27 16:44:41 发布