Android开源框架
文章平均质量分 86
学习Android流行的开源框架
沙漠一只雕得儿得儿
沙漠一只雕,白月光与朱砂痣
展开
-
ARouter原理解析
一、ARouter概述用简单一两句话总结出来:ARouter通过Apt技术,生成保存路径(路由path)和被注解(@Router)的组件类的映射关系的类,利用这些保存了映射关系的类,Arouter根据用户的请求postcard(明信片)寻找到要跳转的目标地址(class),使用Intent跳转。原理很简单,可以看出来,该框架的核心是利用apt生成的映射关系。使用时,在每个需要对其他module提供调用的Activity中,都要声明类似下面@Route注解,我们称之为路由地址。@Route(pa转载 2020-08-09 15:54:52 · 6647 阅读 · 1 评论 -
开源框架解读--Retrofit 2.0解析
第二篇:Retrofit调用流程图和使用到的设计模式 - wlrhnh - 博客园Retrofit分析-漂亮的解耦套路 - 简书从架构角度看Retrofit的作用、原理和启示 - 简书 在前面分析中,我们知道了Retrofit的整体工作流程,就是Retrofit用动态代理生成Call网络请求对象,在这个过程中,用适配器把Retrofit底层的retrofit2.Call对象转换为INetApiService中定义的Call网络请求对象(如Flowable)。问题是,Retrofit具体是如何知原创 2020-09-06 12:10:03 · 549 阅读 · 0 评论 -
开源框架解读--RxLifeCycle解析
一、介绍RxLifecycle目的:解决RxJava使用中的内存泄漏问题。例如,当使用RxJava订阅并执行耗时任务后,当Activity被finish时,如果耗时任务还未完成,没有及时取消订阅,就会导致Activity无法被回收,从而引发内存泄漏。为了解决这个问题,就产生了RxLifecycle,让RxJava变得有生命周期感知,使得其能及时取消订阅,避免出现内存泄漏问题。二、使用首先来介绍下RxLifecycle的使用。1.添加依赖implementation 'com.t转载 2020-08-16 14:54:10 · 614 阅读 · 0 评论 -
开源框架解读--EventBus简析
EventBus 是一款在 Android 开发中使用的发布/订阅事件总线框架,基于观察者模式,将事件的接收者和发送者分开,简化了组件之间的通信,使用简单、效率高、体积小!下边是官方的 EventBus 原理图:EventBus 的用法可以参考官网,这里不做过多的说明。本文主要是从 EventBus 使用的方式入手,来分析 EventBus 背后的实现原理,转载,以下内容基于eventbus:3.1.1版本,主要包括如下几个方面的内容:Subscribe注解 注册事件订阅方法 取消注册 发转载 2020-08-12 17:52:13 · 328 阅读 · 0 评论 -
开源框架解读--ButterKnife简析
ButterKnife 算是一款知名老牌 Android 开发框架了,通过注解绑定视图,避免了 findViewById() 的操作,广受好评!由于它是在编译时对注解进行解析完成相关代码的生成,所以在项目编译时会略耗时,但不会影响运行时的性能。接下来让我们从使用到原理一步步深入了解这把黄油刀的故事!转载以下内容基于 butterknife:8.8.1 版本,主要包括如下几个方面的内容:简单使用 原理分析 注解处理器 JavaPoet一、简单使用首先编写一个 ButterKnife 简单使转载 2020-08-12 11:45:08 · 695 阅读 · 0 评论 -
性能优化专题十三--BlockCanary简析
Looper 提供的机制先看看我们熟悉的 Looper 的源码,里面实现的功能就是不断地从 MessageQueue 里面取出 Message 对象,并加以执行。for (;;) { Message msg = queue.next(); // might block if (msg == null) { // No message indicates that the message queue is quitting. return; }原创 2020-06-27 16:15:26 · 2803 阅读 · 0 评论 -
性能优化专题十二--LeakCanary简析
LeakCanary实现内存泄漏的主要判断逻辑是这样的。当我们观察的Activity或者Fragment销毁时,我们会使用一个弱引用去包装当前销毁的Activity或者Fragment,并且将它与本地的一个ReferenceQueue队列关联。我们知道如果GC触发了,系统会将当前的引用对象存入队列中。如果没有被回收,队列中则没有当前的引用对象。原创 2020-06-26 15:25:59 · 628 阅读 · 0 评论