移动架构
文章平均质量分 78
紫气东来_life
没有谁的努力会被辜负
展开
-
从源码分析Glide
Glide中有很多方面都是我们需要关注,比如生命周期的管理,缓存机制,设计模式等。其中生命周期的管理应该是最简单的,我今天就不进行介绍了,今天主要从数据加载流程中分析缓存机制和相关的设计模式Glide可以加载的数据源非常多,比如File,网络,Drawable等,今天主要以网络图片为例进行介绍,其他的类型加载流程是一样的,如下:Glide.with(this) .load("https://img2.baidu.com/it/u=894463840,2154289921&fm=25原创 2022-04-22 11:12:56 · 1787 阅读 · 0 评论 -
Hermes框架使用及流程分析
Hermes是Android中的跨进程通信框架,由饿了么出品。主要使用Binder来实现的跨进程通信。跨进程通信在Android中很重要,但是实现起来可以说稍微有些麻烦,尤其在两个进程通信的数据类型很多时,要写的中间文件或者AIDL文件就很多。而Hermes很好的解决了这个问题,完全不用你去写Binder文件或者AIDL文件。由于Hermes是在16年开发的,之后一直没有维护,所以直接使用会报错。估计这也是Hermes一直没有火起来的原因吧,毕竟跨进程通信不了解的同学来说,使用的时候报错就直接抛弃了。报错的原创 2021-02-23 17:33:39 · 2063 阅读 · 1 评论 -
EventBus面试题
看了几天的EventBus,根据自己的理解,自拟了几道面试题,我这里只给出题目,就不给出答案了,第一因为我感觉这些题相对比较简单,第二答案虽然都是一样的,但是每个人的描述都不尽相同1.有这么一种情况:A类实现了B接口,Test1Activity注册了EventBus,并且其中test方法被Subscribe注释,问题一:如果方法的参数为A类,Test2Activity中进行了post操作,事件类型为B,Test1Activity的test方法可以接收到事件吗问题二:如果方法的参数为B类,Test2A原创 2021-01-16 19:58:27 · 1534 阅读 · 0 评论 -
EventBus源码---索引原理探究
公司的项目终于到了测试阶段,自己的时间也充裕了起来。今天有时间,我们把EventBus的索引说一下。我们以自动生成索引为例去说,当然我们这里不说APT的内容,仅仅说一下APT生成后的代码,及在EventBus中索引的应用。我们以上篇的代码为例,进入MyEventBusIndex查看,以下的代码就是APT自动生成的public class MyEventBusIndex implements SubscriberInfoIndex { private static final Map<原创 2021-01-16 19:34:21 · 188 阅读 · 1 评论 -
EventBus源码---索引优化的使用
搞了4个小时左右,终于把EventBus的索引优化弄明白了。这里的明白是知道怎么使用了,源码的话,我们下篇文章来说。所以这篇文章我们仅从使用上面来说索引优化。有的同学可能会说,使用嘛,即便是没用过,百度一下也就OK了。以下两点,是我要写这篇博客的原因:(1)我问了我身边做Android开发的朋友,他们使用EventBus都没有使用过索引优化,不使用索引优化也没有感觉EventBus慢。既然这样,谁还会去理这个索引优化呢?所以,大家好像都不怎么关心索引优化。我们要想技术上高人一等,就要知道别人所不知道的原创 2021-01-02 17:56:49 · 2241 阅读 · 4 评论 -
EventBus源码---sticky属性探究
EventBus的粘性特征,我之前并没有看过它的流程代码,以为会略微复杂一点,今天看一下,发现原来是我想多了,真的是简单到没必要说的那种,不过毕竟之前说了之后来讲,那就简单说一下吧。关于粘性特征,从以下几个地方去说:postSticky,registerpostSticky我们看一下这个方法的源码 public void postSticky(Object event) { synchronized (stickyEvents) { sti.原创 2020-12-28 11:38:23 · 320 阅读 · 0 评论 -
EventBus源码---线程切换探究
关于EventBus的线程切换,我们单独放在这篇文章里。我们直接进入正题。我们先看看枚举类ThreaModepublic enum ThreadMode { POSTING, MAIN, MAIN_ORDERED, BACKGROUND, ASYNC}POSTING:消息订阅者将与发送者所处在同一线程中。这是默认值。该模式避免了线程切换所带来的开销。这是处理简单事务所推荐的模式。如果发布线程是主线程,使用该模式必须立即返回,以避免阻塞主线程。MAI原创 2020-12-28 11:07:51 · 259 阅读 · 0 评论 -
EventBus源码---post流程分析
11111111原创 2020-12-27 18:03:59 · 481 阅读 · 0 评论 -
EventBus源码---register流程分析
本来最近想好好看一下Android的源码,看到Binder的时候,发现好多类都被隐藏了,需要下载源码(有6.0的,感觉太老了,不想用),源码的体积有点大,9.0的大概在40个G左右,公司又要求不能下载比较大的文件,只能等到周末在家下载了。系统源码看不了,就撸一撸三方框架的源码,这次决定看一看EventBus源码。之前的时候,看过EventBus源码,架构思想上比较简单,属于轻量级框架,代码也没多少,这里回顾的时候,发现思想简单不代表代码简单,好多细节处理的地方都值得我们来借鉴学习。关于EventBus的博客原创 2020-12-25 18:34:20 · 334 阅读 · 0 评论 -
Glide框架解析---生命周期的介绍(四)
上一篇博客中我们主要介绍了Glide调用的流程,涉及的类还有方法我在交互图中做了详细的介绍,这篇呢我们来介绍一下Glide的生命周期。本来我打算在博客中详细的写出每个类和每个过程,但是涉及的篇幅实在的太多了,所以之后的博客还是以思想为主,具体的源代码我会直接提供出来,当然有不懂的地方可以随时留言提问。1.生命周期的监控Glide是如何实现载体生命周期的监控的呢?其实思想和简单,就是在载体(...原创 2020-01-29 15:33:54 · 372 阅读 · 0 评论 -
Glide框架解析---调用流程(三)
前两篇主要介绍了Glide的缓存机制和注册器,但是这两篇并不是Glide的核心功能,只能算是深入了解Glide的铺垫工作。调用流程的理解,会让你深入的了解Glide的工作过程和源码,这篇开始,我们正式进入Glide的核心部分。Glide的调用流程,相对比较复杂,涉及的类和方法都比较多,如果直接进入源码一步一步的待着大家看,可能看到后面,前面的就忘记了,所以我这里画了一张调用Glide加载图片时...原创 2020-01-14 22:38:51 · 195 阅读 · 0 评论 -
Glide框架解析---磁盘缓存与加载器(二)
一、磁盘缓存其实磁盘缓存的原理没什么好说的?为什么这么说呢?因为Glide磁盘缓存的实现使用的也是JakeWharton大神的DisLruCache,所以呢,我们也是直接拿过来用即可,直接把这三个文件直接Copy即可。下面我们来说一下磁盘缓存怎么去使用:首先我们先写一个磁盘缓存用到的接口类DiskCachepublic interface DiskCache { interf...原创 2020-01-13 14:49:03 · 392 阅读 · 0 评论 -
Glide框架解析---缓存机制介绍及活动缓存 内存缓存 复用池相关类(一)
Glide是一个非常成熟的图片加载框架了,一开始从事Android开发就一直使用这个框架,使用的很熟,但是原理和源代码上就没怎么研究了,最近抽出时间来,好好的学习了Glide的源码和原理,我把自己的学习成果分享给大家。因为Glide的原理相对比较复杂,一篇博客很难把Glide说清楚,所以之后我会按照顺序分享6-8篇博客,手写一个阉割版的Glide。今天我先简单介绍一下Glide的缓存机制及写一...原创 2020-01-09 10:20:16 · 2227 阅读 · 1 评论 -
注入神器Dagger2-----对象单例模式分析(二)
在上一章节我们简单介绍了Dagger2的使用和源码中的流程。到这里我们可能还会有疑问,如果某个类的对象在注入的时候创建多个对象,那么几个对象是一样的?如果不一样,这个类的对象被创建多次,就会产生多个不同的对象,浪费内存,有没有单例的模式呢?我们带着这些疑问进行探讨。一、局部单例和全局单例以上一章中HttpObject来说,在MainActivity中创建两个对象,mHttpObject1和...原创 2019-10-01 22:23:41 · 375 阅读 · 0 评论 -
注入神器Dagger2-----基本使用及原理分析(一)
Dagger2是一个实现注入的框架,相信大家都听说过ButterKnife,Dagger2和ButterKnife的作用是一样的,但是实现的功能更加强大。ButterKnife只能注入View和事件,而Dagger2可以注入任何一个对象。本节主要介绍一下Dagger2的实用及实现的原理。一、Dagger2的使用首先我先用张图来简单说明一下Dagger2使用的流程图中的Module是...原创 2019-09-30 17:05:48 · 260 阅读 · 0 评论