ServiceMethod serviceMethod = Retrofit.this.loadServiceMethod(method);
OkHttpCall okHttpCall = new OkHttpCall(serviceMethod, args);
return serviceMethod.callAdapter.adapt(okHttpCall);
loadServiceMethod其实就是加载ServiceMethod,它是对应我们接口中定义好的一个网络请求方法,例如getCall这个方法,最后还是交给OKHTTP,
ServiceMethod<?, ?> loadServiceMethod(Method method) {
ServiceMethod<?, ?> result = serviceMethodCache.get(method);
if (result != null) return result;
// 设置了一个线程同步锁,主要是为了保证我们的线程的数据安全。
synchronized (serviceMethodCache) {
/**
* 获取到我们的ServiceMethod,这个ServiceMethod采用的是单例模式进行创建的,
* 它其实有一个serciveMethodCache缓存池进行获取。
*/
result = serviceMethodCache.get(method);
/**
* 非空判断。如果没有缓存就自己创建一个ServiceMethod对象,
* 它是通过构建者模式Builder来进行创建的。
*/
if (result =