接下来我们来看下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)阻塞线程是否。同步会,异步不会,它会开启一个新的线程。