自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Jing

加油,永远不要觉得别人望尘莫及,要做的,只是每天进步一点点!

  • 博客(25)
  • 收藏
  • 关注

原创 CountDownLatch源码浅析

目录成员变量构造方法线程等待countDown方法getCount方法CountDownLatch允许一个或多个线程等待其他线程完成操作,基于对共享锁的获取来实现,获取到共享锁,说明线程不再需要等待,未获取到,说明线程仍然需要等待。成员变量 private final Sync sync; // 用来实现功能的基础组件,继承AQS,Sync是CountDow...

2018-10-26 12:29:07 213

原创 CyclicBarrier源码浅析

目录简述成员变量等待解除阻塞重置获取当前阻塞的线程个数简述阻塞多个线程,直到阻塞的线程个数达到一定条件,则唤醒所有阻塞的线程,并由唤醒的线程执行任务。 成员变量 // 用于线程安全的锁 private final ReentrantLock lock = new ReentrantLock(); // 等待条件 private...

2018-10-23 18:29:39 199

原创 Retrofit源码浅析

目录创建Retrofit创建代理类创建ServiceMethod解析注解创建CallAdapter创建Converter创建Call请求创建OkHttpCall对象ServiceMethod的adapt方法执行网络请求构建网络请求解析响应创建RetrofitRetrofit.Builder有以下几个成员变量,通过链式可以设置Builder的成...

2018-10-15 22:05:56 215

原创 otto 源码浅析

目录otto简单使用说明Bus的构造方法Bus的register方法findAllProducersdispatchProducerResultToHandlerfindAllSubscribersBus的post方法Bus的unregister方法otto简单使用说明单例创建Bus类register用于注册,unregister用于取消注册post...

2018-10-11 20:39:40 337

原创 PriorityBlockingQueue简述

一个支持优先级排序的无界阻塞队列 PriorityBlockingQueue可以理解成是对PriorityQueue加上了Lock功能,所以不再分析具体源码。

2018-10-04 17:13:05 353

原创 LinkedBlockingQueue源码浅析

一个由链表结构组成的有界阻塞队列 成员变量 // 允许的最大容量 private final int capacity; // 当前节点个数,因为有两个锁,所以节点个数采用原子类 private final AtomicInteger count = new AtomicInteger(); // 链表的头节点 transient N...

2018-10-04 17:12:30 202

原创 ArrayBlockingQueue源码浅析

一个由数组结构组成的有界阻塞队列 构造方法 public ArrayBlockingQueue(int capacity) { this(capacity, false); } // 初始化数组,实例化ReentrantLock和两个等待队列notEmpty、notFull public ArrayBlockingQueue(int c...

2018-10-04 17:07:36 389

原创 Hashtable源码浅析

Hashtable是并发安全的hash表,结构是数组+链表。 put // 添加 key value public synchronized V put(K key, V value) { // Make sure the value is not null if (value == null) { throw n...

2018-10-04 12:21:41 193

原创 PriorityQueue源码浅析

优先级队列,基于数组的树形结构。 添加元素 // 添加元素 public boolean add(E e) { return offer(e); } // 添加元素 public boolean offer(E e) { if (e == null) throw new NullPoint...

2018-10-04 12:17:27 179

原创 LinkedList源码浅析

节点Node:静态内部类 // 节点类,有值、前驱、后继 private static class Node<E> { E item; Node<E> next; Node<E> prev; Node(Node<E> prev, E element, Node&lt...

2018-10-04 12:09:58 128

原创 Vector与Stack简述

 Vector:线程安全,默认容量为10,容量增长量默认为0,每次进行扩容是旧的容量乘以2。支持null的添加。基于数组实现。 Stack:Stack继承Vector的栈结构。...

2018-10-04 11:54:04 718

原创 ArrayList源码浅析

 动态数组的列表 添加元素 // 增加一个元素 public boolean add(E e) { // 确保数组容量足够 ensureCapacityInternal(size + 1); // Increments modCount!! // 增加元素 elementData[size++] = e; ret...

2018-10-04 11:49:50 210

转载 java.net.UnknownHostException异常

http://www.cnblogs.com/rockdean/articles/2439030.html太诡异了,这个诡异的问题让我不幸的碰到又不幸浪费了很多时间去找问题。nnd第一种: java.net.UnknownHostException: Host is unresolved ***.****.*** 80你若是确定你的网络权限在配置文件中写好,也确定自己的网络是好

2017-08-19 13:27:12 7742

原创 使用Gson解析报错

在使用Gson时解析报错:com.google.gson.JsonSyntaxException: java.lang.IllegalStateException: Expected BEGIN_ARRAY but was BEGIN_OBJECT大意为解析时期待的是一个JSONArray,而实际是一个JSONObject,说明服务器端给的json数据实质是一个JSONObject

2017-08-19 01:20:34 793

转载 chrome jsonView插件安装

http://www.cnblogs.com/cssfirefly/p/4368020.htmlchrome 应用商店打不开,想装插件愁死人了。今天想到一个好方法,以 jsonView插件为例分享一下。1、打开 https://github.com ;2、搜索 jsonView 链接:https://github.com/search?utf8=%E2%9C%9

2017-08-17 20:55:25 396

原创 【Android 数据业务解析】nwTypeChanged引发的原因

本文主要分析由于nwTypeChanged引发的数据连接流程。在DcTracker的handleMessage方法中,会由于nwTypeChanged原因来使得手机去尝试建立数据连接,调用setupDataOnConnectableApns方法。// 当DcTracker接收到EVENT_DATA_RAT_CHANGED的消息时,会尝试建立数据连接,建立连接的原因是nwTypeCh

2017-07-23 13:17:51 939

原创 Dialog的不完全事件分发机制

说是不完全,一是觉得自己语言表述不完美,二是觉得没有方方面面都分析到。        首先我们知道以下知识:        setCancelable(false); dialog弹出后会点击屏幕或物理返回键,dialog不消失        setCanceledOnTouchOutside(false); dialog弹出后点击屏幕,dialog不消失,点击物理返回

2017-07-17 23:11:12 1525

原创 【Android 数据业务解析】PreferredApn修改的源码分析

DcTracker中需要去获取preferredapn的id以及修改preferredapn的id,涉及到两个方法的使用,如下:getPreferredApn方法// 得到preferredapn的方法private ApnSetting getPreferredApn() { if (mAllApnSettings == null || mAllApnSettings.

2017-07-16 12:23:40 2519

原创 UriMatcher使用原理的源码分析

1 构造方法分析首先构造一个UriMatcher对象A,构造方法如下:public static final int NO_MATCH = -1;/** * Creates the root node of the URI tree. * * @param code the code to match for the root URI */// 构造方法publi

2017-07-09 13:44:05 795

原创 【Android 数据业务解析】APN参数创建

手机可以上网,首先要建立数据连接,建立数据连接之前需要有apn才可以,所以本节先研究APN参数的创建过程。在DcTracker.java中,创建APN的起点方法为createAllApnList方法。DcTracker的createAllApnList方法:/** * Based on the sim operator numeric, create a list f

2017-07-08 18:27:11 3602

原创 Activity中使用Dialog的方式

1.Activity中Dialog的使用方法        Activity提供了一套Dialog的管理机制,涉及到以下方法。onCreateDialog: 创建dialog(需要重写)onPrepareDialog: 在创建dialog后的其他准备工作(需要重写)showDialog: 显示dialog(直接调用)dismissDialog: 取消dial

2017-06-25 20:41:09 2056

原创 findViewById方法探究

配置布局的xml文件时,有时会给View配置id,而在Activity中寻找到该View的方法就是通过该id号来找到该View的。具体调用的方法就是findViewById。

2017-06-25 17:11:48 18053 1

原创 Android自定义View训练【2】

Android自定义View训练【2】

2017-01-09 22:39:32 300

原创 Android自定义View训练【1】

Android自定义View训练【1】

2017-01-08 21:38:48 373

原创 追踪Android源码,理解Registrant运行机制

追踪Android源码,理解Registrant运行机制

2016-12-31 20:58:07 1067

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

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