- 博客(10)
- 收藏
- 关注
原创 OkHttp系列五、OKHttp的任务调度器——Dispatcher
Dispatcher的作用:1、分发同步或者异步请求;2、处理并维护同步或者异步请求的状态,并维护线程池,用于执行请求的复用。Dispatcher的操作都是在UI线程里面实现的。关于Dispatcher我们关注的几个变量:private int maxRequests = 64;//OKHttp允许的最大并发请求数量private int maxRequestsPerHost = 5...
2019-11-10 19:55:10 663
原创 OkHttp系列四、OkHttp异步请求流程和源码分析
异步请求的前面三部步:创建OKHttp对象,创建Request对象,创建Call对象都是一样的,这里就不再累述。我们直接从call调用enqueue方法开始进行异步请求开始分析,enqueue方法源码如下:public void enqueue(Callback responseCallback) { synchronized (this) { if (executed) throw ne...
2019-11-10 19:52:50 258
原创 OkHttp系列三、OkHttp同步请求流程和源码分析
同样的,第一步肯定是创建OkHttpClient客户端:OkHttpClient okHttpClient = new OkHttpClient.Builder().build();我们先看Builder()构造方法:public Builder() { dispatcher = new Dispatcher(); protocols = DEFAULT_PROTOCOLS; con...
2019-11-10 19:48:52 228
原创 OkHttp系列二、使用OkHttp进行同步/异步网络请求
简要请求的代码如下:Request mRequest = new Request.Builder().url("www.baidu.com").get().build();Call call = client.newCall(mRequest);//同步请求call.execute();同步请求会阻塞线程,直到请求有了结果。Android主线程中不适用该请求方式,子线程中会较少的使用...
2019-11-10 19:39:43 549
原创 OkHttp系列一、使用OkHttp进行网络请求的4个步骤
我们创建OkHttpClient客户端的方式通常有两种:方式一、OkHttpClient client = new OkHttpClient();方式二、OkHttpClient okHttpClient = new OkHttpClient.Builder().build();上面二者等价,都是创建一个OkHttpClient客户端,其实打开new OkHttpClient()源码我们可...
2019-11-10 19:34:15 1828
原创 从源码角度理解Activity 与 Window、PhoneWindow、DecorView 四者之间的关系
从Activity的源码分析,我们得知,每个activity都持有一个Window对象:public class Activity extends ContextThemeWrapper{ @UnsupportedAppUsage private Window mWindow;}但是Window是一个抽象类,他只有唯一的实现类PhoneWindow,本质上来讲,activity持有的W...
2019-11-09 20:47:43 504 1
原创 Handler通信机制下创建Message对象的几种方法比较
我们在使用Handler通信的时候,通常还会创建一个Message对象用于对消息的封装。那创建一个Message对象有哪些方式呢?我们常用的创建Message对象的方式有如下三种:方式1、Message message = new Message();方式2、Message message = Message.obtain();方式3、Message message = new Handl...
2019-11-09 11:24:56 868
原创 JSONObject的get()、getString()、opt()、optString()四者的区别
要分析三者的区别,首先我们要知道他们内部的实现原理,所以我们先看他们的源码实现:getString(String key)方法的源码如下:public String getString(String name) throws JSONException { Object object = get(name); String result = JSON.toString(obje...
2019-11-09 10:48:15 5934
原创 动画一、细说Animation五大基本动画
在Android动画中,共有两种动画:View Animation(视图动画)和Property Animator(属性动画); 其中: • View Animation包括Tween Animation(补间动画)和Frame Animation(帧动画); • Property Animator包括ValueAnimator和ObjectAnimation;首先,直观上,他...
2019-11-03 09:20:51 1330 2
原创 多线程和线程池的比较与理解
话不多说,直接上代码,要说的都在代码注释里面:public class ThreadPools { //TODO:ThreadPoolExecutor的执行规则—— //1.如果线程池中的线程数量未达到核心线程的数量,那么直接启动一个核心线程; //2.如果线程池中的线程数量已经达到或者超过核心线程的数量,那么任务会被插入到任务队列中排队等待执行。 //3.如果在步骤2中无法将...
2019-11-03 00:51:32 1076 1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人