OkHttp源码学习(二)拦截器

前言 OkHttp同步或者异步都会通过getResponseWithInterceptorChain方法获取响应,此方法通过一系列的拦截器进行处理。这些拦截器分别有:RetryAndFollowUpInterceptor(重试或者重连)、BridgeInterceptor(request和res...

2018-11-30 20:39:55

阅读数:13

评论数:0

RecyclerView的复用与回收机制

前言 最近学习了RecyclerView的进阶使用,同时也学习了它的缓存机制,以下是通过看它相应的源码去了解它的获取View(ViewHolder)缓存的过程。 寻找获取缓存起点 获取缓存的起点为绘制流程的onLayout方法,然后追寻相关方法:dispatchLayout()—&am...

2018-11-10 20:02:49

阅读数:57

评论数:0

RecyclerView的进阶使用(分割线、拖拽、动画)

前言 使用RecyclerView已经很久了,它相对于ListView和GridView方便很多,使用LayoutManager等类可以给它的使用带来很大的便利。但是后面发现,使用RecyclerView的功能只是那么一小点,也就是都它的基本使用,所以最近对它进一步学习和使用。 添加分割线 R...

2018-11-08 21:41:42

阅读数:39

评论数:0

重温RxJava(使用Kotlin编写)

前言 使用RxJava挺久的了,但是这后面接触的少,所以有一些淡忘了,于是今天再一次总结了一下,刚好最近都在用Kotlin,所以以下代码是使用Kotlin编写的。 RxJava可以说是这样的: 异步:可以很方便地切换线程 简洁:在复杂的逻辑中保持代码简洁 基本使用 1.创...

2018-09-15 23:41:06

阅读数:95

评论数:0

Retrofit源码学习

前言 学习Retrofit的源码已经有一段时间了,最近又翻了一遍,然后总结了一下。它里面用到了很多个设计模式,有工厂模式、代理模式、适配器模式等。 Create方法 mRetorfit.create(Service.clss) create方法的返回语句如下: ret...

2018-09-05 23:55:27

阅读数:44

评论数:0

从生成代码来学习Dagger2的注入过程

前言 用过的同学都会知道,Dagger2用于去除依赖,通过注解便可以为我们生成创建对象的代码。通过apt插件在编译阶段生成注入代码,反射只在编译阶段使用,在应用运行阶段没有涉及到注解反射。下面直接进入生成代码的分析,这也是我最近对生成代码学习的记录。 当我们使用Dagger编写好代码后...

2018-09-04 20:56:47

阅读数:21

评论数:0

OpenGL ES 2.0学习(一)入门知识点

前言 一个多月前开始学习Android OpenGL ES,起初是因为需要做滤镜,然后慢慢发现很有趣。但是自己感觉学起来并没有想象那么容易,主要涉及太多的转换,还有着色器语言等,但它确实强大,可以做一些滤镜,很炫的3D效果/全景等。目前自己还处于入门阶段。 OpenGL ES ...

2018-08-30 21:04:01

阅读数:72

评论数:0

自定义一个很舒服的视频录制按钮

前言 最近开发了相机的相关功能,其中包括了视频的录制。当做好录制功能时,学长就要求要把录制的按钮改成比较友好和美观,过后按照了提出的效果自定义了这个录制按钮。今天分享给大家。 ...

2018-07-21 01:09:57

阅读数:114

评论数:0

Architecture Component—Paging 的使用及源码阅读

Paging Libray 简单来说,Paging Libary用于数据的加载,然后显示到UI上。它是很有趣并且很方便于我们的一个库,比如在后台线程加载好数据,然后在主线程中将数据展示出来。实现了数据的加载处理与UI分离开,并且可以在用户不知不觉中加载更多的数据,使之能够无限的加载更多,不用待到...

2018-07-03 21:33:39

阅读数:436

评论数:0

Java基本类型与包装类型

前言 从开始接触Java到现在也有两年的时间了,还记得最开始就是学数据类型,这是最基础的,可能大家会觉得这有什么好讲的,但是很多时候我们在开发中可能会忽略关于它们的一些知识点,这篇文章将给大家带来关于Java基本类与String的一些知识。 基本类型 以下通过一个表格来说明它们: ...

2018-05-13 21:22:55

阅读数:67

评论数:0

OkHttp使用与源码学习(一)

前言 从开始使用OkHttp已经很久了,它是一个很nice的网络框架,其功能强大,可进行失败重连,在连接中出问题时自动恢复。最近在复习的时候学了它的源码,以下主要是写它的使用和源码学习。 使用 GET请求 //异步请求 OkHttpClient client=new OkH...

2018-05-03 22:25:51

阅读数:95

评论数:1

设计模式之观察者模式

概述 日常生活中,我们在某个应用中订阅某一主题的信息,那么该应用会向我们推送我们所订阅类型的相关信息;或者说我们定了X类型的报纸,那么送报员每天会给我们送来X类型的报纸,让我们能够得知该类型的最新动态。以上的两种场景,就是观察者模式的表现。我们就像是观察者,而我们订阅的主题就像是被观察者,...

2018-04-29 22:39:06

阅读数:32

评论数:0

设计模式之工厂模式

概述 一说到工厂,我们都知道它是生产某产品的场所,里边有工人、设备、技术人员等。经过一番的辛勤劳作,便会产出相应的产品。而工厂模式,顾名思义它是一种像工厂的模式,把某个对象的生产过程封装在工厂类中,根据用户的不同需求生产出不同的产品。 工厂模式 例子 //动物的最上层 publ...

2018-04-22 17:54:04

阅读数:59

评论数:0

设计模式之Builder模式

概述 在平时开发或者开别人源码的时候,都会看到很多的Builder,它把构建的细节完全隐蔽起来,在用户不知道构建细节的情况下把一个对象创建了出来,就很像建房子一样,我们只需要提供材料、工钱和设计图,建设过程全部交由建设工程师做,你完全可以不用知道怎么做,最后一个跟设计图一样的房子就会出现在...

2018-04-16 23:13:45

阅读数:56

评论数:0

设计模式之策略模式

概述 在平时出门的时候,可能我们会为了选择穿什么鞋子而犹豫,因为出门的目的不同,所以就会选择不同的鞋子,而穿上不同的鞋子出门。今天为大家带来的设计模式是策略模式,它与上述的情景很类似,比如在图片缓存策略中,我们可以根据需要(本地缓存或本地缓存+内存缓存)而传入不同的缓存类。策略模式的定义为...

2018-04-08 13:23:50

阅读数:32

评论数:0

设计模式之代理模式

概述 在生活中,我们可能会遇到这样的场景:我们想购买一些进口的商品,但是自己没有护照或通行证,这时候我们想到的就是代购,而代购的这个人也就是代理人,ta不是实际销售商品的人,只是起到代购的作用,在这中途ta可以赚点差价作路费(中途操作)。下边介绍的就是与这个场景很相似的设计模式——代理模式...

2018-04-05 23:15:18

阅读数:51

评论数:0

设计模式之单例模式

概述 设计模式可以说在我们的开发中很常见,包括使用在自己的代码中,或者看别人写的代码(比如框架)中,基本都会用到。在一本书中看到:设计模式也即是人们在开发中共同认同的一种开发习惯,可以提高代码的可读性、重用性和扩展性。由此可见学习设计模式并应用到实际开发中是很重要的。 单例模式 ...

2018-04-04 22:44:45

阅读数:63

评论数:2

基于RecyclerView实现侧滑删除

列表的条目侧滑删除可以说是最熟悉不过的了,它的实现方法也有很多,这次我给大家带来的是基于RecyclerView实现的。关于RecyclerView的使用在本文中没有提及,可以看看这篇:RecyclerView的使用 先看看效果图: 大概思路为: 重写RecyclerView的...

2018-03-02 22:19:53

阅读数:144

评论数:0

ThreadLocal的使用和实现原理

概述 ThreadLocal是一个将指定值储存到指定线程的类。简单的讲ThreadLocal可以指定储存数据类型,然后在不同线程中设置某个值,这个值在其他线程是不可以获取到的,只能在本线程才能获取到。平常中很少使用到ThreadLocal,但在也不少见到,比如Looper类中就有使用到它。...

2018-03-01 14:32:28

阅读数:149

评论数:0

集合框架源码学习之HashTable

前面学习的集合都是非线程安全的,这次学习的集合它的方法都加了同步,使得它是线程安全的。 简介 基于hash表实现,存放key-value对,通过单链表解决hash冲突 当容量超过闸值时,会进行扩容 实现Serializable、Cloneable接口,支持克隆和序列化 线程安全,可用...

2018-02-10 23:46:33

阅读数:66

评论数:0

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