Android源码分析和框架编写
文章平均质量分 84
包含Android 源码分析、常见框架的源码分析以及教你如何迈向开发框架的第一步;
Alex@W
这个作者很懒,什么都没留下…
展开
-
Android框架源码分析——OKhttp缓存篇
CacheInterceptor:负责缓存管理@Override public Response intercept(Chain chain) throws IOException {Response cacheCandidate = cache != null? cache.get(chain.request()) //(1)获取请求地址对应的缓存数据: null;long now...原创 2019-07-07 17:46:39 · 581 阅读 · 2 评论 -
Android框架源码分析——Okhttp源码分析
1、OkhttpClient创建OkhttpClientOkHttpClient okHttpClient = new OkHttpClient.Builder().build();源码public Builder() {dispatcher = new Dispatcher(); //创建任务调度器protocols = DEFAULT_PROTOCOLS; //默认支持的Http...原创 2019-07-07 17:00:43 · 243 阅读 · 0 评论 -
Android框架源码分析——RxJava&Schedule源码分析
3、线程切换使用实例Observable.create(object:ObservableOnSubscribe<String>{ override fun subscribe(e: ObservableEmitter<String>) { e.onNext("A") }}) .subscribeOn(Schedulers.io(...原创 2019-07-01 22:22:55 · 519 阅读 · 0 评论 -
Android框架源码分析——Retrofit源码分析
1、使用Demopublic static <T> T createApi(Class<T> clazz, String url) { Retrofit retrofit = new Retrofit.Builder() .baseUrl(url) .client(okHttpClient) ...原创 2019-07-01 21:56:25 · 325 阅读 · 0 评论 -
Android框架源码分析——RxJava源码分析
1、基本订阅流程使用实例Observable.create(ObservableOnSubscribe<String> { e -> e.onNext("A") }) .subscribe(object : Observer<String>{ override fun onComplete() { } override fun ...原创 2019-06-29 22:35:03 · 444 阅读 · 0 评论 -
Android框架源码分析——Glide缓存机制源码分析
1、Glide的缓存Glide 在加载图片时会依次访问以下缓存:活动资源 (Active Resources) - 现在是否有另一个 View 正在展示这张图片?内存缓存 (Memory cache) - 该图片是否最近被加载过并仍存在于内存中?资源类型(Resource) - 该图片是否之前曾被解码、转换并写入过磁盘缓存?数据来源 (Data) - 构建这个图片的资源是否之前曾被...原创 2019-06-29 12:46:08 · 561 阅读 · 0 评论 -
Android框架源码分析——Glide源码分析
1、Glide的使用 Glide.with(this).load(url).into(imageView)在当下Glide已经是很常见的图片加载工具了,相信很多开发者都体会到其方便指出,Glide的使用就简单一句话即可完成图片的加载,但不要小看这句话,Glide的背后可是作出了成吨的工作,今天整理一下Glide的相关笔记,跟随上面的一句代码探索Glide的奇妙指出;2、with()...原创 2019-06-27 23:07:47 · 533 阅读 · 0 评论 -
Android框架源码分析——EventBus
1、介绍篇EventBus三要素Event 事件:可以是任意类型,既然为事件一定伴随着传递和操作,在使用中扮演信息和事件载体Subscriber 事件订阅者:这里的订阅着和RxJava中作用一样负责监听某种状态,在状态和条件改变时回调处理,在EventBus3.0之前所有的订阅方法必须是onEvent开头,分别是onEvent、onEventMainThread、onEventBack...原创 2019-04-26 16:28:11 · 313 阅读 · 0 评论 -
Android框架源码分析——RxJava过滤操作符
一、简介:前面几篇已经介绍了关于RxJAva的创建、转换、功能等操作符,接下来本篇一起看看剩下的条件过滤的操作符二、过滤操作符的作用:过滤 / 筛选 被观察者(Observable)发送的事件 & 观察者 (Observer)接收的事件三、过滤操作符的分类四、操作符介绍filter()作用:根据条件过滤发送的事件,符合条件的才会发送 参数:Predi...原创 2018-05-06 21:31:38 · 405 阅读 · 0 评论 -
Android框架源码分析——RxJava功能操作符
一、功能操作符:辅助被观察者(Observable) 在发送事件时实现一些功能性需求二、功能操作符按照使用功能,大致分类:订阅:subscribe() 线程调度:subscribeOn()、observeOn() 延迟:delay() do操作:do() 错误处理 :onErrorReturn() 、onErrorResumeNext() 、onExceptionRes...原创 2018-05-06 15:34:24 · 872 阅读 · 0 评论 -
Android框架源码分析——RxJava组合操作符
1、简介:上篇文章中已经介绍了每种组合操作符的简单使用了,相信已经感受到功能的强大之处了,但上面的每个例子都是简单的更能演示,下面我们看看RxJava在实际开发中是如何大显神通的吧。获取数据一般我们在获取服务器数据时,拿到数据后会做缓存处理,所以当再次请求时会先查看缓存或磁盘中是否有相关的内容,即查询顺序为:查询内存中是否有缓存 查询硬盘上是否有缓存 从服务器获取代码演...原创 2018-05-05 23:15:12 · 300 阅读 · 0 评论 -
Android框架源码分析——RxJava组合操作符
1、简介:之前几篇讲解的操作符多是单个被观察者对象发送事件,本篇来介绍下组合操作符的使用,组合操作符的作用:组合 多个被观察者(Observable) & 合并需要发送的事件2、类型:3、操作符介绍concat() /concatArray():作用:合并多个被观察者 ,发送的顺序与产生的顺序相同(串行发送) 二者联系:concat 使...原创 2018-05-05 22:26:14 · 425 阅读 · 0 评论 -
Android框架源码分析——RxJava变换操作符
1、简介RxJava 的作用之强大相信每个用过的同学都深有体会,在介绍基本的创建操作符之后,我们继续来看变换操作符,正是因为变换操作符的存在,RxJava的才可以满足不同场景的功能。变换操作符的作用:对事件序列中的事件 / 整个事件序列 进行加工处理(即变换),使得其转变成不同的事件 / 整个事件序列2、操作符类型map() flatMap() ConcatMap ()...原创 2018-05-03 09:44:41 · 293 阅读 · 0 评论 -
Android框架源码分析——RxJava 操作符使用
概述:上篇文章简单的介绍了Rxjava中Observable的创建操作符的使用和其代表的意义,因为比较简单所以写的比较粗略,本文将继续介绍一些关于类型变换的操作符,变换操作符的强大支出在于不需要额外的处理,可以快速的将数据进行处理和转换,得到需要的类型且代码和逻辑清晰易懂,引用网上的一张图片:Map()map():实现对发送的数据按照一定的规则进行转换,达到输出不同的类型 Obs...原创 2018-02-05 13:55:17 · 377 阅读 · 0 评论 -
Android框架源码分析——RxJava 操作符使用介绍
RxJava因为功能强大和代码结构简单深受程序员的亲睐,之前的学习也使用过可是有的操作符还是会遗忘,为了自己的总结和复习,接下来的几篇会针对RxJava的一些操作符的使用,进行简单的归纳:1、基本用法:Observable.create(new ObservableOnSubscribe<Integer>() { @Override ...原创 2018-02-02 10:40:47 · 501 阅读 · 0 评论 -
Android框架源码分析——以Arouter为例谈谈学习开源框架的最佳姿势
得意于众多项目和第三方库的开源,开发中使用几行代码即可实现复杂的功能,但使用只是源码库的搬运工,源码中真正牛逼的技术并不属于我们,所以对源码和开源库的学习成了Android开发者提升技能的必经之路,笔者也曾经认真学习了常用开源框架的原理和实现,足以在开发和面试中的问题,就此以为掌握了源码(有没有同道?),直到有一天自己去编写库,当面对框架设计、任务调度、任务并发、线程切换、缓存、文件等系列问题时,...原创 2019-01-03 11:01:34 · 1839 阅读 · 3 评论 -
Android框架源码分析——Glide详解(基础篇)
一、概述对于每个安卓程序猿来说,图片的加载是最常见问题,不管是简单的单一图片还是炫酷的gif图片,大家都应注意的问题OOM,当然对于有点经验的人来说,在开发阶段就会注意这个问题了,解决措施也很简单,利用缓存策略LruCache和DisLruCash,在内存不足时清除缓存,当然这个方法需要自己去写一些ImageLoader,现在没人回自己去写这个了,因为有大神的杰作,就是本文的主人公Glide;二、G原创 2017-04-18 13:06:41 · 464 阅读 · 0 评论 -
Android 插件化——Java动态代理
最近本着不求甚解的态度重温了一下主流框架的源码,加上之前的笔记,所以趁热打铁的总结一下,学习框架或开发框架所必备的基础知识:Java反射 Java注解 注解代码自动生成 Java动态代理 AOP1、简介代理的理解:代理是一种软件设计模式,通过代理的方式实现程序的扩展、修改和隐藏的等,具体上讲代理这种设计模式是通过不直接访问被代理对象的方式,而访问被代理对象的方法 适应场景:设...原创 2018-09-29 16:22:26 · 764 阅读 · 0 评论 -
Java反射、注解
最近本着不求甚解的态度重温了一下主流框架的源码,所以趁热打铁的总结一下,学习框架或开发框架所必备的基础知识:Java反射 Java注解 注解代码自动生成 Java动态代理 AOP一、反射1.1、简介本文简单总结一下Java反射和注解,反射可以算是必备条件了,基本学习的主流框架中都会看到反射的身影,他的灵活使用也为很多逻辑的扩展提供了可能,通过Java的反射机制,可以在程序中访...原创 2018-09-25 18:26:36 · 1837 阅读 · 0 评论 -
Java注解代码生成
Java注解代码生成最近本着不求甚解的态度重温了一下主流框架的源码,所以趁热打铁的总结一下,学习框架或开发框架所必备的基础知识:Java反射Java注解注解代码自动生成Java动态代理AOP简介在我们常用的框架中注解和自动生成代码的身影很常见,因为注解和自动生成的配合,从而简化和统一代码,使框架使用简单且容易扩展,典型且最熟悉的就是ButterKnife,主要功能利用注解省略了...原创 2018-09-26 15:19:04 · 3263 阅读 · 2 评论 -
Androdi热修复之路 ——热修复框架Tinker 源码分析
1、Application的生成2、下载补丁合成Patch包在程序中开启加载补丁包TinkerInstaller.onReceiveUpgradePatch(getApplicationContext(), Environment.getExternalStorageDirectory().getAbsolutePath() + "/patch.patch");通过网络...原创 2019-08-14 18:20:37 · 386 阅读 · 0 评论 -
Android插件化——VirtualAPK接入与源码分析
1、宿主工程引入VirtualApk在项目Project的build.gradle中添加依赖dependencies {classpath ‘com.didi.virtualapk:gradle:0.9.8.6’}在宿主app的build.gradle中引入VirtualApk的host插件apply plugin: ‘com.didi.virtualapk.host’在app中添...原创 2019-08-12 18:35:27 · 904 阅读 · 0 评论