接下来我们来看下OkHttpClient的一个静态内部类Builder。调用这个Builder方法就是为了所有的对象创建。
public Builder() {
/**
* 核心之一,分发器类,会接收到同步、异步的请求队列,
* 根据它所要的条件,来进行相应的同步、异步请求的分发。
*/
dispatcher = new Dispatcher();
//
protocols = DEFAULT_PROTOCOLS;
connectionSpecs = DEFAULT_CONNECTION_SPECS;
eventListenerFactory = EventListener.factory(EventListener.NONE);
proxySelector = ProxySelector.getDefault();
cookieJar = CookieJar.NO_COOKIES;
socketFactory = SocketFactory.getDefault();
hostnameVerifier = OkHostnameVerifier.INSTANCE;
certificatePinner = CertificatePinner.DEFAULT;
proxyAuthenticator = Authenticator.NONE;
authenticator = Authenticator.NONE;
connectionPool = new ConnectionPool();
dns = Dns.SYSTEM;
followSslRedirects = true;
followRedirects = true;
retryOnConnectionFailure = true;
connectTimeout = 10_000;
readTimeout = 10_000;
writeTimeout = 10_000;
pingInterval = 0;
}
OkHttp同步方法总结1)创建OkHttpClient和Request对象(两者均使用到了build设计模式)。
2)将Request封装成Call对象。
3)调用Call的execute()发送同步请求。
OkHttp同步需要注意
1)发送请求后,就会进入阻塞状态,直到收到响应。
以下是异步请求操作:
当调用这个enqueue这个放的时候,它会去开启一个新的工作线程,然后这个网络请求回去这个新的线程(子线程)去执行,
当异步请求成功之后,它会回调Callback对象的onResponse这个方法,在这个onResponse里面会进行相应成功数据的处理。
OkHttp异步方法总结
1)创建OkHttpClient和Request对象(两者均使用到了build设计模式)。
2)将Request封装成Call对象。
3)调用Call的enqueue()进行异步请求。
OkHttp异步需要注意
1)onResponse和onFailure都是在子线程去执行的。
同步 和 异步 的区别
1)发起请求的方法调用。
2)阻塞线程是否。同步会,异步不会,它会开启一个新的线程。