Android 常用三方库源码分析
文章平均质量分 93
分析 Android 开发中最常用的第三方库,包括 OkHttp、Retrofit、EventBus 、Glide 等
开发者如是说
这个作者很懒,什么都没留下…
展开
-
BitmapPool 了解吗?Glide 是如何实现 Bitmap 复用的?
highlight: agate这个问题实际上是我前几天面试时遇到的一个问题,虽然我之前分析过 Glide 的源码,但是老实说,如果不是面试遇到这类问题,我根本不会留意 Glide 的 Bitmap 复用这块…不管怎么说,遇到了这个问题,我们就来看下 Glide 是如何实现 Bitmap 复用的吧~1、“池化”以及对象复用其实,说起“池化”以及对象复用,在 Android 中例子还是有这么几个的。典型的比如 Handler 中的 Message. 当我们使用 Message 的 obtain 获取消.原创 2021-04-16 12:22:09 · 540 阅读 · 0 评论 -
用这个库解决你的图片压缩和加载问题
在 Android 应用中,图片是占用内存资源比较多的一部分。如何在应用当中加载并处理图片的同时又能够保证程序响应的效率呢?你可以使用我开发的这个库:Compressor。随着新版本 1.3.5 的发布,这个库已经支持了非常多的功能,并且支持在 Kotlin 协程中获取压缩的结果。之所以添加这些功能是因为在之前我做的应用都是与 CV 相关的,所以不可避免地要面对林林种种的应用场景。能够支持更多的应用场景,这也是这个库与其他的很多框架不同的地方。下面就通过示例一一介绍下如何使用该库处理各种应用场景。1、原创 2020-06-06 21:18:53 · 421 阅读 · 0 评论 -
Android 插件化框架 DynamicLoadApk 源码分析
DynamicLoadApk 应该算是 Android 插件化诸多框架中资历比较老的一个了。它的项目地址在:dynamic-load-apk。该项目运行之后的效果是,使用 Gradle 编译出插件包和宿主包,都是以 APK 的形式。安装宿主包之后,通过 ADB 将插件包 push 到手机中。启动宿主包时,它会自动进行扫描将插件加载到应用中。点击插件之后,进入到插件的应用界面。印象中最初接触的插件...原创 2019-03-02 13:44:08 · 306 阅读 · 0 评论 -
Android 网络框架 Retrofit 源码解析
在之前的文章 《Andriod 网络框架 OkHttp 源码解析》 中我们分析了 OkHttp 的源代码。现在我们就来分析一下 OkHttp 的兄弟框架 Retrofit。关于 Retrofit 的注解的使用,可以参考其官方文档:https://square.github.io/retrofit/。Retrofit 也是 Square 发布的一个开源的库,它是一个类型安全的 Http 客户端,适...原创 2018-11-03 23:46:05 · 795 阅读 · 0 评论 -
Andriod 网络框架 OkHttp 源码解析
1、OkHttp 的基本使用OkHttp 是 Square 的一款应用于 Android 和 Java 的 Http 和 Http/2 客户端。使用的时候只需要在 Gradle 里面加入下面一行依赖即可引入:implementation 'com.squareup.okhttp3:okhttp:3.11.0'我们知道,Http 请求有多种类型,常用的分为 Get 和 Post,而 POST...原创 2018-11-03 23:49:18 · 785 阅读 · 0 评论 -
RxJava2 系列-1:一篇的比较全面的 RxJava2 方法总结
看了许多讲解RxJava的文章,有些文章讲解的内容是基于第一个版本的,有些文章的讲解是通过比较常用的一些API和基础的概念进行讲解的。但是每次看到RxJava的类中的几十个方法的时候,总是感觉心里没底。所以,我打算自己去专门写篇文章来从API的角度系统地梳理一下RxJava的各种方法和用法。1、RxJava 基本1.1 RxJava 简介RxJava是一个在Java VM上使用可观测的序列...原创 2018-11-04 18:52:40 · 1219 阅读 · 0 评论 -
RxJava2 系列-2:背压和 Flowable
背压(Back Pressure)的概念最初并不是在响应式编程中提出的,它最初用在流体力学中,指的是后端的压力,通常用于描述系统排出的流体在出口处或二次侧受到的与流动方向相反的压力。在响应式编程中,我们可以将产生信息的部分叫做上游或者叫生产者,处理产生的信息的部分叫做下游或者消费者。试想如果在异步的环境中,生产者的生产速度大于消费者的消费速度的时候,明显会出现生产过剩的情景,这时候就需要消费...原创 2018-11-04 18:53:27 · 1080 阅读 · 0 评论 -
RxJava2 系列-3:Subject 及其几种应用方式
在这篇文章中,我们会先分析一下 RxJava2 中的 Subject ;然后,我们会使用 Subject 制作一个类似于 EventBus 的全局的通信工具。在了解本篇文章的内容之前,你需要先了解 RxJava2 中的一些基本的用法,比如 Observable 以及背压的概念,你可以参考我的其他两篇文章来获取这部分内容:《RxJava2 系列 (1):一篇的比较全面的 RxJava2 方法总结》...原创 2018-11-04 18:54:44 · 1167 阅读 · 0 评论 -
Glide 系列-1:预热、Glide 的常用配置方式及其原理
在接下来的几篇文章中,我们会对 Android 中常用的图片加载框架 Glide 进行分析。在本篇文章中,我们先通过介绍 Glide 的几种常用的配置方式来了解 Glide 的部分源码。后续的文中,我们会对 Glide 的源码进行更详尽的分析。对于 Glide,相信多数 Android 开发者并不陌生,在本文中,我们不打算对其具体使用做介绍,你可以通过查看官方文档进行学习。Glide 的 API...原创 2019-01-06 21:21:37 · 1610 阅读 · 0 评论 -
Glide 系列-2:主流程源码分析(4.8.0)
Glide 是 Android 端比较常用的图片加载框架,这里我们就不再介绍它的基础的使用方式。你可以通过查看其官方文档学习其基础使用。这里,我们给出一个 Glide 的最基本的使用示例,并以此来研究这个整个过程发生了什么:Glide.with(fragment).load(myUrl).into(imageView);上面的代码虽然简单,但是整个执行过程涉及许多类,其流程也比较复杂。为了更...原创 2019-01-06 21:22:26 · 1214 阅读 · 0 评论 -
Glide 系列-3:Glide 缓存的实现原理(4.8.0)
1、在 Glide 中配置缓存的方式首先,我们可以在自定义的 GlideModule 中制定详细的缓存策略。即在 applyOptions() 中通过直接调用 GlideBuilder 的方法来指定缓存的信息: @Override public void applyOptions(@NonNull Context context, @NonNull GlideBuilder bu...原创 2019-01-08 17:40:49 · 1940 阅读 · 0 评论 -
Android EventBus 的源码解析
1、EventBus 的使用1.1 EventBus 简介EventBus 是一款用于 Android 的事件发布-订阅总线,由 GreenRobot 开发,Gihub 地址是:EventBus。它简化了应用程序内各个组件之间进行通信的复杂度,尤其是碎片之间进行通信的问题,可以避免由于使用广播通信而带来的诸多不便。首先是 EventBus 的三个重要角色Event:事件,它可以是任意类型...原创 2018-11-12 00:14:49 · 768 阅读 · 0 评论