![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
源码
droidDing
千里之行,始于足下
展开
-
glide溯源之线程池
glide溯源系列文章一、 相关类1. GlideExecutor二、几个重要的线程池1. 磁盘缓存线程池 //磁盘缓存线程池大小默认是1private static final int DEFAULT_DISK_CACHE_EXECUTOR_THREADS = 1;public static GlideExecutor newDiskCacheExecutor() {...原创 2018-09-19 14:48:21 · 1875 阅读 · 0 评论 -
ClassLoader类加载源码解析
Java类加载器BootClassLoader: 用于加载Android Framework层class文件。PathClassLoader: 用于Android应用程序类加载器。可以加载指定的dex,jar、zip、zpk中的classes.dexDexClassLoader:加载指定的dex,以及jar、zip、apk中的classes.dex源码解析ClassLoader中...原创 2019-06-14 08:52:03 · 1880 阅读 · 0 评论 -
如何阅读android的framework层源码
如何阅读framework层源码我们先提出4个问题来分解“如何阅读framework层源码”这个问题源码从哪里可以看到?阅读源码需要哪些基础?阅读源码需要哪些工具?如何有效地阅读源码?一、源码从哪里可以看到?阅读源码可以通过在线阅读和离线阅读两种方式在线阅读https://www.androidos.net.cn/http://androidxref.com/离线阅读...原创 2019-06-14 10:29:29 · 3330 阅读 · 3 评论 -
RecyclerView源码分析之四级缓存机制
众所周知,RecyclerView在android中实现列表是性能非常好的,那么性能好的原因在哪里呢?关键还是在它在处理view时的回收和复用。列表在滑动的时候,会进行itemView的回收和复用,那么我们就从滑动回调即onTouchEvent来入手分析。滑动时函数调用链四级缓存机制mChangeScrap与 mAttachedScrap : 显示在屏幕上和不显示在屏幕上的mCache...原创 2019-06-17 16:00:26 · 2243 阅读 · 2 评论 -
多线程、线程池及AsyncTask
基本概念进程和线程进程:资源分配的最小单位线程:独立运行的最小单位并行和并发并行:同时执行,举例子来说,就是高速公路上4辆车可以并排着跑,双核四线程的并行度是4,可以同时运行4个线程并发:单位时间内,能执行的个数,举例来说,单位时间内可以通过的车的数量线程实现方式继承Thread实现Runnable接口实现Callable接口:线程执行结束后有返回值...原创 2019-06-12 11:27:57 · 359 阅读 · 0 评论 -
OkHttp解析从入门到精通-从使用到原理
一、基本概念二、如何使用三、工作流程分析i.分发器ii.拦截器重试拦截器:在交出(交给下一个)之前,负责判断用户是否取消了请求,在获得了结果之后,会根据响应码判断是否需要重定向,如果满足条件那么就会重启执行所有拦截器桥接拦截器:在交出之前,负责将HTTp协议必备的请求头加入其中(如:Host)并添加一些默认的行为(如:GZIP压缩);在获得了结果后,调用保存cookie接口并解析GZ...原创 2019-08-12 09:11:11 · 2046 阅读 · 0 评论 -
java的线程池ThreadPoolExecutor原理解析
多线程问题,很多时候都会用到线程池,而ThreadPoolExecutor是java中线程池的重要实现类,理解ThreadPoolExecutor有助于我们更好地理解线程池、甚至去自定义自己的线程池。基本使用初始化线程池Executor executor=new ThreadPoolExecutor(0,Integer.MAX_VALUE,60, TimeUnit.MILLISECOND...原创 2019-08-29 09:28:22 · 551 阅读 · 1 评论 -
android进程间通信:aidl使用及原理
android中,应用与应用、应用内不同进程之间需要做数据传递时,就需要用到进程间通信,常用的进程间通信有7种,而使用最多的便是aidl,aidl是基于binder来实现的。原创 2019-08-29 14:44:34 · 771 阅读 · 1 评论 -
android应用程序进程启动过程简析
简述在安卓系统中,当我们点击一个图标后,系统是如何一步步启动app并显示出来页面的呢?接下来我们做一下宏观流程的分析步骤Launcher进程收到用户的点击后,向AMS请求启动根ActivityAMS在判断该app进程不存在后,向Zygote进程请求创建应用程序进程Zygote进程,创建并启动应用程序进程应用程序做一些准备工作后,向AMS请求启动根ActivityAMS启动根Act...原创 2019-06-05 15:09:33 · 532 阅读 · 0 评论 -
android事件分发机制
基础知识MotionEvent事件简介ACTION_DOWN按下ACTION_MOVE移动ACTION_UP抬起ACTION_CANCEL事件被上层拦截时触发事件分发、拦截与消费类型相关方法ActivityViewGroupView事件分发dispatchTouchEvent☑️☑️☑️事件拦...原创 2019-06-05 14:01:00 · 1281 阅读 · 1 评论 -
glide溯源之Key和缓存文件对应
glide溯源系列文章 看glide源码的时候,对glide关于磁盘缓存文件名、内存缓存文件和资源请求路径的对应关系很好奇,于是来了看看glide是怎么把这个问题处理好的兴趣。glide中定义了抽象接口Key来做各种唯一标识,所有Key的实现类下面有说明,实现方式类似,而Key和磁盘缓存文件名的关系通过SafeKeyGenerator中的getSafeKey方法来关联,本文分...原创 2018-09-20 11:38:54 · 2903 阅读 · 0 评论 -
glide溯源之网络请求管理
glide溯源系列文章一、相关类简介1. RequestManager:用来管理请求的类;2. Request -> SingleRequest:一个请求,持有一个Engine;3. Engine:负责加载任务,管理活跃、已缓存资源,一个Engine持有一个Jobs,一个Jobs持有多个EnginJob4. EngineJob:加载任务,一个EnginJob持有一个Decode...原创 2018-09-21 09:41:26 · 1863 阅读 · 1 评论 -
glide溯源之设计学习
glide溯源系列文章一、学习概览1. 工厂模式2. 面向抽象3. 泛型二、工厂1. HttpUrlConnectionFactory:http请求工厂2. ConnectivityMonitorFactory3. TransitionFactory:动画工厂4. EngineKeyFactory:引擎key工厂5. EngineJobFactory:EnginJob工厂...原创 2018-09-21 14:39:09 · 163 阅读 · 0 评论 -
okhttp溯源之工作流程
okhttp是square公司推出的网络请求框架,已经逐渐成为android开发者的首选网络框架,我们从使用入手来分析一下okhttp的工作流程。 okhttp的使用:// 1.创建client对象OkHttpClient client=new OkHttpClient();// 2.创建请求requestRequest request=new Request.Bui...原创 2018-10-13 15:30:21 · 345 阅读 · 0 评论 -
okhttp溯源之相关类介绍
1. OkHttpClient:okhttp的请求构建类2. Request:http请求信息的包装类,其中包含了http请求的一系列请求信息,包括url、header、method等3. Response:http请求结果的包装类,其中包含了http请求的结果4. RealCall:准备执行的请求,执行请求、取消请求的操作在此类中执行5. Dispatcher:调度器,对于请求进行统一调...原创 2018-10-13 15:33:31 · 216 阅读 · 0 评论 -
arouter实现activity跳转原理
一、思路分析arouter让我们可以非常简单地实现组件间页面跳转,实现的基本思路是 1. 在对应的activity上加上注解,通过apt技术来自动生成代码,代码能将 activity对应路径 和 class 添加到路由表中;2. 通过扫描获取所有类,遍历自动执行步骤1中所生成地代码,从而路由表中有了对应地数据,路由表的数据结构为 Map<String,Class<? e...原创 2018-10-16 16:32:11 · 1890 阅读 · 1 评论 -
glide溯源之生命周期管理
glide溯源系列文章 通过查看glide的源码,我们知道glide是通过传入的context的生命周期来管理资源请求的生命周期的,那么glide是如何一步步实现的呢?接下来我们来分析一下。 首先,我们来看一下glide的用法GlideApp .with(context) .load(url) .centerCrop() ....原创 2018-10-10 10:48:22 · 406 阅读 · 0 评论 -
glide溯源
最近有时间看了glide的源码,于是想写一下关于glide源码的一些解释和说明,一方面供后来者更好的去阅读glide源码,一方面也为自己的学习做一个记录,本次glide源码分析基于glide4.8.0版本(下载地址),以下是glide溯源的系列文章: glide溯源之网络请求管理 glide溯源之线程池 glide溯源之Key和缓存文件对应 glide溯源之生...原创 2018-10-10 11:16:26 · 1114 阅读 · 0 评论 -
android的ANR原理剖析及图解(基于android9.0)
android中如果在主线程执行耗时操作,那么将会弹出系统弹窗ANR,那么framework层是如何实现超时的判定、都有哪些情况会产生ANR呢?经过分析framework源码发现,有以下四种场景会引起ANRInputDispatching Timeout: 输入事件分发超时5s,包括按键分发事件的超时Service Timeout:服务在20s内未执行完成BroadcastQueue T...原创 2019-09-19 11:19:40 · 1045 阅读 · 0 评论