
第三方源码学习
记录自己平时学习到技术知识点的源码,包括java,android第三方库和原生的组件
narkang
一切的成功都是背后的努力和汗水
展开
-
并发系列--ThreadLocal
前言阅读ThreadLocal以前在看源码的时候会使用到,并且面试时候也会问到,最近趁空余时间看了下源码,来此总结下。ThreadLocal是线程内部的数据类,通过它可以在指定的线程中存储数据,对于其它线程是无法获取到数据。借此可以实现一些特殊功能。使用场景一、场景一 每个线程需要一个独享的对象当某些数据是以线程为作用域并且不同线程具有不同的数据副本的时候,就可以考虑采用ThreadLocal。最常见的使用场景就是Handler的Looper,它的作用域就是线程并且不同线程具有不同的Looper,原创 2020-08-08 14:36:16 · 355 阅读 · 0 评论 -
Retrofit源码流程解析(二)
上一篇讲了Retrofit的请求流程,对框架的大致调用过程做了了解,地址在这里Retrofit源码流程解析(一),这一篇打算讲解具体调用Okhttp3的过程,以及数据请求完成对数据的解析过程。这一过程都集中在OkHttpCall这个类中,更将详细的话还是回调到其它类中。接下来还是结合具体源码来讲解。我们知道Retrofit有execute同步和enqueue异步两种请求方式,分别都...原创 2018-05-11 18:30:36 · 415 阅读 · 0 评论 -
Retrofit源码流程解析(一)
17年就打算好好读下Retrofit的源码的,后来由于种种原因耽搁了,现在终于有时间来写博客记录下自己读源码的总结了。Retrofit是一套网络请求封装库,底层网络请求还是OkHttp,它只是让请求的方式变成接口的描述方式,源码虽然不多,但是是设计模式的典范,里面结合各种设计模式,以及许多优秀的设计思想,非常值得阅读的。一、环境Retrofit下载地址,它是用Maven构建的,至于工具...原创 2018-04-22 22:53:40 · 354 阅读 · 0 评论 -
TakePhoto框架源码流程解析(一)
在我最近一年接触的项目中,一直都会接触到一个功能就是图片的拍摄与选取,对于Android系统,各个厂家对于手机系统都会有不同的功能定制,导致碎片化一直很严重,写出的同一套程序,也许两个不同的手机上都会有不同的效果,也许有的手机上根本无反应,这一直是需要解决的问题。TakePhoto简介我在做这一功能时候,一直都是用的github上的一框架TakePhoto,这框架对于android的拍原创 2018-01-20 19:39:47 · 3012 阅读 · 1 评论 -
TakePhoto框架源码流程解析(二)
上一篇TakePhoto框架源码流程解析(一)地址,这一篇打算详细介绍下TakePhotoImpl的使用,毕竟是TakePhoto的核心类,所有的调用都会回调到这个类中,所以还是有必要学习下,对自己的编程能力还是有很大提升的。在上一篇介绍到,当我们调用接口的某个方法时,都会走动态代理的TakePhotoInvocationHandler的invoke方法,最后会回调到TakePhotoImpl原创 2018-01-28 18:38:37 · 1010 阅读 · 0 评论 -
TakePhoto框架源码流程解析(三)
在上一篇文章中介绍了TakePhoto的常见api,这一篇打算介绍下TakePhoto的图片压缩解决方案,TakePhoto的图片压缩有两种方案,一种是第三方压缩工具LuBan,另一种是自带的图片压缩方案,自身的图片压缩方案分为尺寸压缩和质量压缩,关于图片压缩的更详细的文章可以看这里。接下来将结合源码介绍下TakePhoto中这两种图片压缩方案的实现过程。 入口调用图片无论是拍照...原创 2018-02-08 23:36:21 · 739 阅读 · 0 评论 -
EventBus中SubscriberInfoIndex的使用
前言EventBus使用起来还是很方便的,它的源码是基于反射实现的,在3.0之后增加了注解处理器,在程序的编译时候,就可以根据注解生成相对应的代码,相对于之前的直接通过运行时反射,大大提高了程序的运行效率,但是在3.0默认的还是通过反射去查找用@Subscribe标注的方法,一般在使用的时候基本都是这个模式//注册if (!EventBus.getDefault().isRegister...原创 2018-07-09 16:53:02 · 1563 阅读 · 0 评论 -
EventBus中HandlerPoster,BackgroundPoster,AsyncPoster的执行流程
前言在EventBus中有几种线程模式,这几种线程模式分别代表注册的方法可以运行在主线程,或者子线程,其中这几种线程模式之间的线程切换都是用HandlerPoster,BackgroundPoster,AsyncPoster实现的,这里就来分析下它们的具体实现,看下别人的设计思想。EventBus的ThreadModeThreadMode是一个枚举类,每个实例都是一种线程状态,...原创 2018-07-13 16:02:36 · 778 阅读 · 2 评论