
Android 开源库学习
鸽一门
Slow down, Old Sport. 慢慢来,比较快~
展开
-
Android依赖注入框架:ButterKnife 8.4.0新版本导入及使用详解
一直在使用 Butter Knife的同志们应该知道此库不断更新,现在导入主要是运用 android-apt,而且使用方法有了细微变化,下面来依次介绍。官方文档在此: https://github.com/JakeWharton/butterknife导入到项目中1. 在项目中的 build.gradle 中包含“android-apt”插入buildscript { repo原创 2016-11-01 15:34:03 · 1286 阅读 · 0 评论 -
浅析RxJava 1.x&2.x版本区别及原理(二):map、lift操作符源码解析
上一篇文章讲解了RxJava 1.x&2.x版本的基本元素(Observable、Subscriber、Flowable、Observer等)流程源码分析,对RxJava两个版本的基本使用元素和订阅原理有了一定的认识后,此篇文章将重点置于map、lift操作符,已知操作符的作用是将发出的数据进行处理再发送,RxJava源码内部具体操作原理如何?来一探究竟。此系列文章重点在于分析源码,并...原创 2018-05-04 17:08:21 · 960 阅读 · 0 评论 -
浅析RxJava 1.x&2.x版本使用区别及原理(一):Observable、Flowable等基本元素源码解析
RxJava开源框架的风靡程度在Github上无需多言,它带来的响应式编程模式和线程随意切换、嵌套请求、背压等功能给了开发者耳目一新的体验,更是成为了大多数APP中常用的RxJava+Okhttp/Retrofit+MVP/MVVM/Clean黄金组合中的一员。我犹记得知乎团队在去年线下还开展过一次线下RxJava交流会,邀请了扔物线讲解相关知识及体验,可见各大厂对此的重视度。如非要列举一个RxJ...原创 2018-05-02 23:27:55 · 5732 阅读 · 1 评论 -
Android热修复(一):底层替换、类加载原理总结 及 DexClassLoader类加载机制源码探索
在早期的Android开发中,若客户端发布更新后遇到紧急bug需要及时修复,通常只能等待新版本解决再次发布,但是重新发布版本代价太大且用户下载安装成本高,若Bug未及时修复,无疑会严重影响用户体验,因此衍生了一系列技术来解决以上问题,其中一种就是Hybrid方案,即将需要经常变更的业务逻辑以H5的形式独立出来。还有一种是插件化方案。因此在Android开发近几年中,又衍生出了新的解决方案——热修复。开发者可以直接将更原创 2018-02-23 09:24:17 · 7088 阅读 · 2 评论 -
优雅设计封装基于Okhttp3的网络框架(完):原生HttpUrlConnction请求、多线程分发 及 数据转换
前5篇博文完成了此框架的一大模块—–多线程下载,而这两篇文章实现另一大模块——Http基本框架封装,在上一篇博文中完成了HttpHeader的接口定义和实现、状态码定义及response、request接口封装和实现,定义了许多接口和抽象类,在接下来编码过程中会体现出程序的扩展性重要性。在此篇博文中将添加新功能——原生请求的类库支持,你会发现在此基础上只需增加3个类即可,充分体现出了程序的扩展性。新原创 2017-08-03 07:57:38 · 3868 阅读 · 1 评论 -
优雅设计封装基于Okhttp3的网络框架(六):HttpHeader接口设计实现 及 Response、Request封装实现
到目前为止,多线程下载功能设计、编写、优化工作已经完成,但是网络框架编写工作并没有完成,此篇将完成Http核心架构,编写的新功能还是围绕在http请求上,涉及到的知识点:httpHeader的接口定义和实现http请求头和响应头访问编写http状态码定义http中的 response封装、request接口封装和实现原创 2017-08-02 10:31:57 · 3513 阅读 · 0 评论 -
优雅设计封装基于Okhttp3的网络框架(五):多线程、单例模式优化 及 volatile、构建者模式使用解析
关于多线程下载功能,前四篇博文所讲解内容已经实现,接下来需要对代码进行优化。开发一个新功能并不复杂,难的是考虑到代码的扩展性和解耦性,后续需要进行的bug修复、完善功能等方面。此篇内容主要讲解代码优化,将从线程优化、单例优化、设计优化这三个方面进行讲解。此篇内容将涉及到以下知识:线程优化及Linux系统中线程调度介绍Android中常用的5种单例模式解析volatile关键字底层原理及注意事项原创 2017-08-01 11:45:21 · 2286 阅读 · 0 评论 -
优雅设计封装基于Okhttp3的网络框架(四):多线程下载添加数据库支持(greenDao)及 进度更新
通过前三篇博文的学习,已经编码实现多线程下载功能的核心代码,通过多个线程之间的管理和调度来处理下载任务,最后再引入队列机制来完善功能。此篇博文主旨需要将下载的进度存储到数据库中,目的是为了可以在恢复时可以取出进程下载进度,从未下载部分开始下载,能更节省流量,提高用户体验。此篇文章将学习:多线程下载添加数据库支持greenDao开源库自动生成数据库相关代码完善网络请求接口中的进度更新功能原创 2017-07-31 14:08:43 · 2387 阅读 · 0 评论 -
以 Okhttp3源码 为例 ------ 图解 缓存机制 的原理和实现(下)
之前写的一篇是介绍缓存机制的流程和原理,并讲解了HTTP协议中缓存相关的字段,彻底了解了缓存机制原理后实践了Okhttp3框架的缓存实现,即第一篇的内容已经打下了基础,此篇就从源码的角度来解析Okhttp3框架的缓存机制的实现。(未看过第一篇,建议先了解缓存机制原理及HTTP协议中的重要字段,链接如下:) http://blog.youkuaiyun.com/itermeng/article/detai原创 2017-07-04 09:17:29 · 2788 阅读 · 3 评论 -
以 Okhttp3源码 为例 ------ 图解 缓存机制 的原理和实现(上)
缓存机制一直以来是一个不可忽视的重要模块,广泛地被运用到 网页端和移动端。对于服务器而言,客户端的缓存很大程度上缓解了它的压力,更是为用户带来了产品快速响应的体验,拥有很多好处。既然是网络请求,必然与HTTP协议联系紧密,不论你是否有这之类的经验,此篇将会从基础开始总结,共同学习缓存机制。原创 2017-02-06 16:29:22 · 4450 阅读 · 0 评论 -
浅析RxJava 1.x&2.x版本区别及原理(三):1.x 版本 Scheduler调度线程变换及subscribeOn、observeOn方法源码解析
上两篇文章都是对比分析RxJava中较基本的订阅流程与操作,即Observable、Flowable等基本元素的源码,还有map、lift操作符的源码。在对Rxjava框架有了一个坚实的基础后,此篇文章将直袭Rxjava中最闪亮的Point,也是Android猿平常在开发中经常遇到的需求 —— 线程切换,主线程中需要进行耗时操作,要求切换到子线程,子线程中需要进行UI更新,要切切换到主线程。以上切...原创 2018-05-06 16:44:05 · 944 阅读 · 0 评论