自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(74)
  • 收藏
  • 关注

原创 android基于Hilt的MVVM框架

当前项目采用的都是常规性架构,遇到不懂的,一定要先了解清楚,磨刀不误砍柴工。差点忘了贴自己的项目地址。

2023-07-05 17:56:03 566

原创 基于saas的一套基础版架构

baseSaas是一个java ee平台,采用前后端分离技术,基于技术组合Spring Boot、springcloud+nocas微服务、Apache Shiro、MyBatis、Bootstrap等),分两大块:系统端管理平台和企业端管理平台。

2022-11-25 19:20:23 1656 1

原创 Android架构师必学——Jetpack Room数据库应用与源码解析(转载)

当前Room注解大全是基于Room2.4版本代码逻辑得来,如果有问题欢迎给予指正。必须!!!是必须理解sql数据库相关操作!!!如果想全面理解当前Room,那么不但对数据库基本操作熟悉

2022-10-27 10:59:09 941

原创 13.从架构设计角度分析AAC源码-Room源码解析第2篇:RoomCompilerProcessing源码解析

由浅入深讲解roomCompilerProcessing源码。下面每个部分,自己认真写,读者认真看。个人建议,可以在深入一点:在理解大框架的基础上,不要忽略细节部分(提醒自己和读者),否则自己想写出高逼格代码照样很难!!!

2022-09-26 09:53:49 772

原创 12.从架构设计角度分析AAC源码-Room源码解析第1篇:当前demo为主线查看涉及的Room源码解析

androidx room源码解析

2022-09-15 09:55:04 800

原创 11.从架构设计角度分析AAC源码-Room源码解析第0篇:开篇

androidx room源码解析

2022-09-15 09:54:25 180

原创 10.从架构设计角度分析AAC源码-Rxjava2源码解析第4篇:责任链模式理解Rxjava2(包含背压和操作符)

Rxjava2从使用者角度来说,可以从**观察者订阅被观察者**理解,被观察者可以进行类型转换,即**操作符运算**,被观察者和观察者可以在指定线程上操作,即**异步**。

2022-07-25 11:25:27 429

原创 9.从架构设计角度分析AAC源码-Rxjava2源码解析第3篇:Rxjava2异步:线程池

严格意义上来讲,线程在线程池上操作只是当前Rxjava2中的一小部分,我们还是从架构层面去学习Rxjava2线程的操作。

2022-07-25 11:24:31 292

原创 8.穿插-从架构设计到实践理解ThreadPoolExecutor线程池

本文开篇简述线程池概念和用途,接着结合线程池的源码,帮助读者领略线程池的设计思路,最后回归实践,通过案例讲述使用线程池遇到的问题,并给出了一种动态化线程池解决方案。

2022-07-25 11:23:31 173

原创 7.从架构设计角度分析AAC源码-Rxjava2源码解析第2篇:Rxjava2异步:线程切换

需求:在指定线程上执行被观察者并且被指定线程上执行的观察者订阅。

2022-07-25 11:21:22 422

原创 6.从架构设计角度分析AAC源码-Rxjava2源码解析第1篇:Rxjava2观察者模式去理解源码

观察者模式(Observer Design Pattern):在对象之间定义一个一对多的依赖,当一个对象状态改变的时候,所有依赖的对象都会得到通知并自动更新。

2022-07-25 11:19:59 357

原创 5.从架构设计角度分析AAC源码-Rxjava2源码解析第0篇:Rxjava2开篇大纲

如果对RxJava2一点都不了解建议先去使用,再来(或者去)看Rxjava源码解析,否则云里雾里的很难理解Rxjava2。

2022-07-25 11:19:08 304

原创 4. 从架构设计角度分析AAC源码-Lifecyce解析(续)

当前主要针对LiveData和ViewModel两个组件源码解析。这两个组件实际是Lifecycle模块下的两个小组件,关联Lifecycle组件,下面进入正题。

2022-07-07 08:07:51 154

原创 3. 从架构设计角度分析AAC源码-Lifecycle解析

前一章我们的LiveData中做了对Activity生命周期变化监听,但是实际情况下生命周期拥有者监听生命周期变化应该提炼出来,因为不仅仅对Data数据,其他情况下也可以根据生命周期变化做响应的操作,例如ViewModel、执行定期任务等。......

2022-07-07 08:07:14 111

原创 2. 从架构设计角度分析AAC源码-我的LiveData

以上代码虽然参考的是Lifecycle源码,但是融入了个人的架构思想,也体现个人架构设计层面的不足。

2022-06-08 10:41:27 256

原创 1.aac开篇-核心组件原理之Lifecycle、LiveData、ViewModel与源码分析技巧(转载)

Lifecycle、LiveData和ViewModel作为AAC架构的核心,常常被用在Android业务架构中。

2022-06-08 10:39:13 279

原创 4..基于Dagger2.38.1版本源码理解hilt注解-其他注解和测试注解

hilt测试环境的注解和其他注解简单介绍,测试环境下的注解解释的比较少

2022-04-25 15:01:39 1538

原创 3.基于Dagger2.38.1版本源码理解hilt注解-@HiltViewModel和@InstallIn处理

主要讲解@HiltViewModel,用于修饰自定义ViewModel。@DefaultComponent修饰的节点。@InstallIn和@TestInstallIn、@Module、@EntryPoint和@EarlyEntryPoint和@GeneratedEntryPoint和@ComponentEntryPoint注解的处理。

2022-04-25 14:59:40 2816

原创 2.基于Dagger2.38.1版本源码理解hilt注解-@AndroidEntryPoint或@HiltAndroidApp

@AndroidEntryPoint用于修饰ComponentActivity、Service、Broadcast、service、Fragment、View。@HiltAndroidApp用于修饰Application;

2022-04-25 10:22:22 1719

原创 1.基于Dagger2.38.1版本源码理解hilt注解 - 总结篇

**hilt我个人的理解是专门为Android设计的一款简化的Dagger。**所以我们虽然使用了hilt,它最终还是会为我们转换成一个Dagger,然后在由Dagger源码处理。

2022-04-25 09:24:55 435

原创 8.基于Dagger2.38.1的hilt源码-RootProcessor和ComponentTreeDepsProcessor

RootProcessor处理@HiltAndroidApp、@HiltAndroidTest和@InternalTestRoot三种注解,以及该注解关联的注解。生成一个@ComponentTreeDeps修饰的节点,该节点再由ComponentTreeDepsProcessor类处理。

2022-04-24 17:47:07 1151

原创 0.基于Dager2.38.1的hilt源码-前言

想了解hilt源码必须对Dagger的使用有所了解,否则将会感觉说的云里雾里。当前hilt源码在应用上相对来说比Dagger简化很多,所以使用方便。but,他还是转换成Dagger形式,所以从源码的角度来说做的比Dagger感觉还要多。代码理解起来自然不容易。

2022-04-24 16:52:30 1473

原创 7.基于Dagger2.38.1的hilt源码-@DisableInstallInCheck、@EarlyEntryPoint、@GeneratesRootInput和@OriginatingElem

基于Dagger2.38.1的hilt源码-@DisableInstallInCheck、@EarlyEntryPoint、@GeneratesRootInput、@OriginatingElement和@UninstallModules

2022-04-12 10:09:51 1393

原创 6.基于Dagger2.38.1的hilt源码-AliasOfProcessor 和 DefineComponentProcessor

AliasOfProcessor处理@AliasOf,该注解用于修饰其他注解。DefineComponentProcessor处理@DefineComponent注解和@DefineComponent.Builder注解修饰的节点。

2022-04-12 09:15:23 181

原创 5.基于Dagger2.38.1的hilt源码-AggregatedDepsProcessor

本篇主要是处理@InstallIn和@TestInstallIn、@Module、@EntryPoint和@EarlyEntryPoint和@GeneratedEntryPoint和@ComponentEntryPoint注解。这些注解只能用于修饰类或接口。

2022-04-11 10:40:22 205

原创 4.基于Dagger2.38.1的hilt源码-@HiltViewModel注解处理

ViewModelValidationPlugin用于校验@HiltViewModel注解和外部的关联。`ViewModelProcessor`类处理@HiltViewModel。当前使用该注解的节点校验并且生成`ViewModelMetadata`对象,针对该`ViewModelMetadata`对象再生成类。

2022-04-08 11:18:40 759

原创 3.基于Dagger2.38.1的hilt源码-CustomTestApplicationProcessor

`CustomTestApplicationProcessor`类处理@CustomTestApplication。当前使用该注解的节点校验并且生成`CustomTestApplicationMetadata`对象,针对该`CustomTestApplicationMetadata`对象再生成类。

2022-04-08 09:47:05 258

原创 2.基于Dagger2.38.1的hilt源码-BindValueProcessor

前言BindValueProcessor类处理@BindValue、@BindValueIntoSet、@BindElementsIntoSet或@BindValueIntoMap。当前使用该注解的节点校验并且生成BindValueMetadata对象,针对该BindValueMetadata对象再生成类。校验并且生成BindValueMetadata对象@BindValue、@BindValueIntoSet、@BindElementsIntoSet或@BindValueIntoMap修饰的bind

2022-04-08 09:06:02 1896

原创 1.基于Dagger2.38.1的hilt源码-AndroidEntryPointProcessor

`AndroidEntryPointProcessor`类处理@AndroidEntryPoint和@HiltAndroidApp注解。当前使用该注解的节点校验并且生成`AndroidEntryPointMetadata`对象,针对该`AndroidEntryPointMetadata对象再生成类。

2022-04-07 09:56:47 494

原创 第二篇 - 设计篇:静馨舍app功能设计

前言本章主要对静馨舍app功能的设计,项目原型图地址,密码:102466。我的原型图就是UI设计图。注意,查看的时候最好把备注关掉(点击一下不显红即可,否则会给查看带来一定不变):备注是做一些规则说明功能设计app主要包含3个功能板块:首页模板、用户模块、频道模块、感言模块、通用设置。首页用户进入app首先会进入到首页面,首页面主要展示banner轮播图,下面有频道和感言tab切换列表:点击搜索按钮,进入频道和感言搜索列表:3.点击添加按钮,进入选择频道类型界面,选择要新

2022-03-22 17:17:45 5940

原创 Dagger2实际应用篇

这里主要针对@MapKey、@Scope、@Qualifier注解还有@IntoSet,@IntoMap和@ElementsIntoSet的理解,因为这几个注解是贯穿始终的,和其他注解或多或少存在关联,如果不提前讲解,后面关联上无法更好的理解。@MapKey、@Scope、@Qualifier三个注解仅仅可用于修饰注解。MapKey是Dagger2自定义的,Scope和Qualifier是javax.inject下的注解。这里包括后面的章节中注解的先后顺序都是经过我精挑细选的,务必保证后面说到的注

2022-03-22 10:08:00 2263

原创 第一篇 - 指南篇:从0开始开发一款app实战 - 社交类app

准备设计一款社交类app,从产品原型图,到数据库设计,到service api服务选型,到service api开发(前后端必须分离),到web后管开发,到app(android和ios)开发,再到微信小程序开发。

2022-03-18 17:26:43 1307

原创 0.Dagger2.38.1源码解析指南

前言Dagger2.38.1源码解析指南,相当于一个整体框架的梳理,这样可以避免浪费时间去摸索它的功能板块,给后来者或者再来者提供一个学习参考。当然了,如果对源码一点不了解的情况下,不一定能达到我所说的效果,但是按照我说这个大纲去对照源码解析我感觉也是非常有帮助的。理想是丰满的,现实是骨感的!!!对我来了一句你写的什么玩意儿肯定也大有人在!!!当前是基于Dagger2.38.1源码解析得出来的结论,相对来说感觉更加精准,存在不足欢迎讨论。还有其他代码,这里主要针对核心的AndroidProces

2022-03-18 10:01:51 124

原创 9.Dagger2.38.1源码解析-AndroidProcessor注解梳理

前言前面主要针对component及其关联的subcomponent、module、bindingMethod、Inject等核心注解的解析。这里针对AndroidProcessor注解梳理以及ComponentProcessor中其他注解例如MapKey注解梳理AndroidProcessor注解AndroidMapKeyValidator类对AndroidInjectionKey和ClassKey注解的校验,这两个注解是使用MapKey注解修饰的注解;ContributesAndroidInje

2022-03-17 10:19:31 215

原创 8.Dagger2.38.1源码解析-Demo梳理component节点生成代码

前言考虑到这块代码的复杂性,我们以当前ProcessorComponent节点生成DaggerComponentProcessor_ProcessorComponent作为demo案例讲解。在讲解前,我们必须先把路由图整理出来,该路由图的作用是依赖的关联生成对应的变量和代码块:component代码实现核心在关系图文件夹下,灰常灰常重要在熟悉下面demo前务必认真、多次、对照前面的关系图去理解当前路由图。component代码生成器是ComponentGenerator类,该类的topLeve

2022-03-16 10:12:10 182

原创 7.Dagger2.38.1源码解析-BindingGraph绑定图形生成和校验

前言继续前面的讲解,这里主要是讲解BindingGraph的生成和校验。如果前面的知识点熟透了,这里其实和后面代码的生成部分并不是很难。绑定图形生成BindingGraph绑定图形是通过一系列转换最终得到该对象。LegacyBindingGraphLegacyBindingGraph对象主要是从componentMethod入口方法(入口方法存在依赖,所以返回类型不能是subcomponent节点)为切入点,从componentMethod入口方法的依赖的key开始去匹配各种声明的key属性:

2022-02-23 08:30:22 286

原创 6.Dagger2.38.1源码解析-Resolved解析器

前言这部分对前面的依赖非常大,这一部分的精华是Resolved解析:从component入口方法componentMethodEntryPoint开始,该入口方法的参数paramter作为当前需要注入实例的MembersInjectionObject对象,该MembersInjectionObject对象中使用的Inject修饰的变量或普通方法表示需要外部component容器实现实例化并且注入到MembersInjectionObject对象中的。换成当前ComponentProcessor作为Dem

2022-02-21 11:08:52 1899

原创 5.Dagger2.38.1源码解析-ComponentProcessor注解生成对象 续

前言继上篇Component及其关联的节点生成的对象,这篇文章主要针对使用Inject或AssistedInject注解生成绑定对象。生成对象在InjectProcessingStep处理Inject或AssistedInject修饰的节点,生成的对象存储于injectBindingRegistry对象中,该对象就是ComponentProcessor类中的被Inject修饰的变量injectBindingRegistry——通过InjectBindingRegistryModule的injectBi

2022-02-17 11:14:25 129

原创 0.Dagger2.38.1源码解析-多种类型查询总结

简介前面的某部分内容影响到后续的代码,所以把一些后面需要的内容在抽离复制一份到这里,这样后面的代码有些直接在这里查找即可。当然不是万能的,该看的还是需要回头看。Key对象一个对象,包含①是否存在包裹,②是否使用了Qualifier注解的注解修饰。如果是依赖中的key对象则表示钥匙,用于匹配binding绑定的key对象非常精辟的总结,自我感觉良好,看不懂去看代码会明白的!!!DependencyRequest依赖对象某一个对象A如果存在DependencyRequest依赖属性,表示当

2022-02-17 11:11:08 835

原创 4.Dagger2.38.1源码解析-ComponentProcessor注解生成对象

简介使用不同注解的节点生成不同对象,对该对象的核心属性介绍,以及一些核心方法说明。在学习的过程中最好拿一个笔对存在的问题进行记录,后面可能会找到,而且要学会不断翻阅前面的内容。如果都找不到需要的答案,我相信这个就是自身找到的亮点问题,对自身提升也有很大帮助。节点生成的对象ComponentDescriptor该对象的生成在ComponentProcessingStep中继校验之后调用如下方法完成ComponentDescriptor对象的生成:生成的是componentDescriptor对象:

2022-02-17 10:53:49 243

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除