自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

haoyuegongzi的博客

天狼啸月

  • 博客(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关注的人

提示
确定要删除当前文章?
取消 删除