
Android 架构师之路
文章平均质量分 89
Android 架构师之路
Android_HQK
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
Android 架构之Glide源码解读(下)
前言 在前两篇中,主要进行了 Glide 三部曲 with、load、into 对应的源码解析。在本篇中将会对Glide的三级缓存以及三层缓存实现的逻辑进行详解。 在解读三级缓存之前,我们先熟悉其原理,然后再将其原理带入源码中解读,将会事半功倍。 所谓的 如图所示 ...原创 2021-10-12 18:40:53 · 262 阅读 · 0 评论 -
Android 架构之Glide源码解读(中)
前言 在上一篇中,主要讲解了Glide 基础知识点以及with、load、into这三部曲中的with,知道了在with中Glide主要帮我们做了生命周期相互绑定的相关工作。在这一篇中,将会对load、into进一步解读相应的源码。 本篇解读的源码版本:4.11.0,读者也可以根据本章步骤,在AS中一步一步解读源码。 1、load 方法 @NonNull @CheckResult @Override public RequestBuilder<Drawable> load(@Nu原创 2021-10-10 19:23:46 · 311 阅读 · 0 评论 -
Android 架构之Glide源码解读(上)
前言 我们在编写Android程序时,Glide图片加载框架已成为大多数App必不可少的部分。接下来我将从如下几点进行Glide源码解读。 Glide 网络请求 Glide 生命周期举例 Glide 生命周期管理 Glide 如何检测内存 Glide 为什么能监听网络判断 Glide 为什么要缓存Fragment 1、Glide 网络请求 在讲Glide 网络请求之前,先看看最原始的网络图片请求加载方式。 public void loadImageUrl(View view) {原创 2021-10-08 16:33:27 · 418 阅读 · 0 评论 -
Android 架构之OkHttp源码解读(下)
前言 在前两篇中主要讲解了OkHttp源码解析,在本篇中,将会结合前两篇所有的知识点,从零开始手写一份阉割版的OkHttp框架。因此,读者也可以按照本章的方式从零开始一步一步手仿造出OkHttp框架。 在开始之前,我们先整理一下,需要按照什么样的步骤才能仿造一个阉割版的OkHttp。 依葫芦画瓢,先创造身体,复制一份,再注入灵魂 创造Request 对象,再造 Response 对象 流程图:分发器、责任链、拦截器 分发器:执行队列、等待队列、线程池、逻辑判断、线程结束 拦截器:对应拦截器的职责干什么 (原创 2021-10-06 23:41:39 · 204 阅读 · 0 评论 -
Android 架构之OkHttp源码解读(中)
前言 在上一篇中,主要讲解了OkHttp 连接池复用机制、高并发分发、以及拦截器设计,但没有讲解每一个拦截器在框架中的作用,所以在本篇中会重点讲解每一个拦截器执行流程,以及对应的关系。 在下一篇中,将会手写一份阉割版的OkHttp,用来巩固对OkHttp的认知。话不多说,直接开始。 Response getResponseWithInterceptorChain() throws IOException { // Build a full stack of interceptors. L原创 2021-10-05 16:06:20 · 187 阅读 · 0 评论 -
Android 架构之OkHttp源码解读(上)
前言 在我们编写Android程序时,OkHttp已经成为了我们必不可少的部分,但我们往往知道OkHttp怎么用,不知其原理。在本篇中,我将通过如下方式带你深入其原理。 OkHttp 调用流程 socket 连接池复用机制 高并发请求队列:任务分发 责任链模式拦截器设计 1.1 OkHttp 调用流程 如图所示: OkHttp请求过程中最少只需要接触OkHttpClient、Request、Call、Response,但是框架内部进行大量的逻辑处理。 所有的逻辑大部分集中在拦截器中,但是在进入拦截器之原创 2021-10-01 19:55:51 · 282 阅读 · 0 评论 -
Android 架构之数据库升级
前言 上一篇讲解了Android数据库如何设计 ,里面含有数据库最基础的增删改查功能,不过只考虑了单数据库,开发者可以举一反三按照对应思路设计多数据库架构。 在本篇里,将会讲解令开发者比较头疼的数据库升级。 话不多说,先来看代码效果,看看是否是想要的 如图所示 当前APP版本号为V007; V001、V002升级到V007有对应的处理逻辑; V003、V004、V005、V006升级到V007也有对应的处理逻辑; 同理可实现任意版本可阔多个版本升级到最新数据库; 开始之前我们先理一下数据库升级的逻辑原创 2021-09-21 00:27:48 · 817 阅读 · 0 评论 -
Android 架构之数据库搭建
前言 你还在苦恼的写SQL么?你还在为数据库升级而烦恼么?你还在因查询数据而写繁琐不可用的代码么? 在这,这些都将不复存在!在本篇中,将会让你一点一滴从无到有创建一个不再为数据库而烦恼的框架。 在开始之前我们先欣赏一下本章实现的最终效果 如图所示: 对应的model,可直接成为表结构,不再写对应的 Create table xxx对应的SQL了 对应model的Dao层,里面封装了数据表的基本操作(增删改查) 对应的增删改查操作,再也不用SQL了,全用对象处理 接下来开始实战了 1、先创建对应相关操作原创 2021-07-15 15:23:01 · 727 阅读 · 0 评论 -
Android 架构之隔离层设计(实现一键切换主流网络框架)下
前言 上一篇中,我们讲解了如何实现一句代码随意切换主流网络框架,以及 Hilt的基本使用 。 在本篇中,我们将会把这俩者相结合,打造成一个 能通过Hilt 快速 切换主流网络框架的例子。 准备工作 在开始之前,我们需先下载 之前已写好的 能快速切换主流框架的demo ; Hilt的集成参考:Hilt的基本使用 回顾隔离层设计思路 当时我们将App看作是客户,各种主流框架看作成不同的业主,而隔离层看作成对应的房产公司以及对应的中介。 而本篇所打造的快速切换主流网络框架的例子,将会重点打造隔离层原创 2021-07-12 16:55:47 · 350 阅读 · 0 评论 -
Android Hilt 基本使用及详解
Hilt 初探 Hilt就是Android团队联系了Dagger2团队,一起开发出来的一个专门面向Android的依赖注入框架。 相比于Dagger2,Hilt最明显的特征就是:1. 简单。2. 提供了Android专属的API。 Hilt 做的优化包括 无需编写大量的Component代码 Scope也会与Component自动绑定 预定义绑定,例如 Application与Activity 预定义的限定符,例如@ApplicationContext与@ActivityContext Hilt 组件介原创 2021-07-12 16:14:49 · 6511 阅读 · 0 评论 -
Android 架构之隔离层设计(实现一键切换主流网络框架) 上
前言 本篇文章主要讲解 Android 比较常用的网络框架封装,以及实现一句代码随意切换主流网络框架。读者也可根据该本章思路实现其他效果,比如说,随意切换权限请求框架等。 特点 按这思路写,代码重构非常简单! 什么是隔离层设计? 先来个图解释下 我们就拿现实生活举例。 将买房的人(客户)看成是我们写的APP; 将有房的人(业主)看成是我们接触的主流网络框架(XUtils、OkHttp、OkGo…); 将房地产公司(比如说链家)看成是客户(我们app)所需要的服务(post、get网络请求等);原创 2021-07-07 16:19:42 · 451 阅读 · 0 评论 -
Android 自定义注解详细用法,手写Butterknife黄油刀
前言 本篇文章主要讲解 Java 注解在Android中的常见用法 Java 注解(Annotation) Java 注解(Annotation)又称 Java 标注,是 JDK5.0 引入的一种注释机制。 Java 语言中的类、方法、变量、参数和包等都可以被标注。和 Javadoc 不同,Java 标注可以通过反射获取标注内容。在编译器生成类文件时,标注可以被嵌入到字节码中。Java 虚拟机可以保留标注内容,在运行时可以获取到标注内容 。 当然它也支持自定义 Java 标注。 内置的注解 Java 定义了原创 2021-07-04 19:05:29 · 333 阅读 · 3 评论 -
Android 静态代理与动态代理详解
学习代理前,我们先了解代理的含义 定义:给目标对象提供一个代理对象,并由代理对象控制目标对象的引用 目的:通过引入代理的方式来间接访问目标对象,防止直接访问目标对象给系统带来不确定的复杂性 静态代理与动态代理 根据加载被代理类的时机不同,将代理分为静态代理和动态代理。 静态代理:编译时就确定了被代理的类是哪一个 动态代理:运行时才确定被代理的类是哪个 静态代理使用 1、静态代理需实现的方法 public interface Subject { void sayGoodBye();原创 2021-07-04 04:08:37 · 1431 阅读 · 0 评论