okHttp同步异步本地缓存

package maxinawei.bw.com.xm_okhttp;

import android.os.Handler;
import android.os.Message;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;

import java.io.IOException;

import okhttp3.Cache;
import okhttp3.Call;
import okhttp3.Callback;
import okhttp3.OkHttpClient;
import okhttp3.Request;
import okhttp3.Response;

public class MainActivity extends AppCompatActivity implements View.OnClickListener {
    private Button tongb;
    private Button yib;
    private Button huanc;
    private TextView suju;
    private String path="http://api.tianapi.com/world/?key=1c18879fe9abf299b86ddbfec3860f03&num=10";
    private Handler handler=new Handler(){
        @Override
        public void handleMessage(Message msg) {
            switch (msg.what){

                case 0:
                    String text = (String) msg.obj;
                    suju.setText(text);
                    break;
                case 1:

                    break;
            }

        }
    };
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        tongb = findViewById(R.id.tongb);
        yib = findViewById(R.id.yib);
        huanc = findViewById(R.id.huanc);
        suju = findViewById(R.id.suju);

        tongb.setOnClickListener(this);
        yib.setOnClickListener(this);
        huanc.setOnClickListener(this);

    }

    @Override
    public void onClick(View view) {

        switch (view.getId()){

            case R.id.tongb:tong();
                break;
            case R.id.yib:yibu();

                break;
            case R.id.huanc:bendi();

                break;

        }

    }

    private void bendi() {
        int size=10*1024*1024;
        Cache cache = new Cache(getCacheDir(), size);
        OkHttpClient client = new OkHttpClient.Builder().cache(cache).build();
        Request request = new Request.Builder().url(path).build();
        Call call = client.newCall(request);
        call.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();
                Message message=new Message();
                message.obj=string;
                message.what=0;
                handler.sendMessage(message);
            }
        });


    }

    private void yibu() {

        OkHttpClient client = new OkHttpClient.Builder().build();
        Request request = new Request.Builder().url(path).build();
        Call call = client.newCall(request);
        call.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();
                Message message=new Message();
                message.obj=string;
                message.what=0;
                handler.sendMessage(message);
            }
        });

    }

    private void tong() {

        new Thread(){
            @Override
            public void run() {
                OkHttpClient client = new OkHttpClient.Builder().build();
                Request request = new Request.Builder().url(path).build();
                try {
                    Response response = client.newCall(request).execute();
                    String string = response.body().string();
                    Message message=new Message();
                    message.obj=string;
                    message.what=0;
                    handler.sendMessage(message);
                } catch (IOException e) {
                    e.printStackTrace();
                }

            }
        }.start();


    }
}

猜你喜欢

转载自blog.csdn.net/kingv587/article/details/80411242