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