前言 刚接触flutter开发的同学肯定对一个概念不陌生:三棵树,分别是widget树,element树和renderobject树。然后大家就开始搜三棵树的各种原理,创建流...

前言 刚接触flutter开发的同学肯定对一个概念不陌生:三棵树,分别是widget树,element树和renderobject树。然后大家就开始搜三棵树的各种原理,创建流...
@leeuser 如果你所谓的业务封装是为了便于以后方便的替换图片加载框架的话,那么你增加一个接口隔离层就可以了啊,glide是这个接口的一个实现,可以考虑使用策略模式,比较麻烦的是你要统计出这个接口层支持哪些效果,比如圆角之类的,要操作切换不同框架时,接口隔离层规定的各种功能都不受到影响
Glide架构设计艺术自从Android诞生以来,Bitmap的管理就一直是大问题,为了更好的管理它,不同的图片加载框架不断的被推出,从刚开始的ImageLoader,到Picasso,再到现在的...
@foreveri7 哈哈,可以
从零开始写拦截器拦截器的应用是非常广泛的,okhttp中有拦截器,spring框架中也有拦截器,这个年代,你要是不知道什么是拦截器你都不好意思说你是程序员。为了防止大家不好意思出门打招呼,今...
@foreveri7 什么意思……
从零开始写拦截器拦截器的应用是非常广泛的,okhttp中有拦截器,spring框架中也有拦截器,这个年代,你要是不知道什么是拦截器你都不好意思说你是程序员。为了防止大家不好意思出门打招呼,今...
@不会飞的扫把 算,只要你设置的scope中包含了第三方依赖就可以
如何开发一款高性能的gradle transform前言 对于java开发者来说,大家好像都比较喜欢在编译期间搞事儿,比如为了做到AOP编程,大家都喜欢利用字节码生成技术,常用的有无痕埋点,方法耗时统计等等。那么Android...
前言 一般来说,如果不是项目中经常需要用到很多的动画,大家可能只是对Android动画的原理有一点点了解,比如Android的view动画只是修改绘制,所以点击事件还是留在原...
自从Android诞生以来,Bitmap的管理就一直是大问题,为了更好的管理它,不同的图片加载框架不断的被推出,从刚开始的ImageLoader,到Picasso,再到现在的...
前言 对于java开发者来说,大家好像都比较喜欢在编译期间搞事儿,比如为了做到AOP编程,大家都喜欢利用字节码生成技术,常用的有无痕埋点,方法耗时统计等等。那么Android...
身为四大组件之一,Activity可以说是和我们开发人员打交道最多的组件了,大家平时开发时可能对这个组件都有一些疑惑,比如为什么启动一个activity是一个重量级行为呢(因...
@大空ts翼 现在这套是利用反射实现的,好处是目标模块只要实现接口,不需要依赖这个库,只要使用的地方依赖了这个库就可以,其实换个思路利用注解也是可以实现的,这样的话目标模块就必须要依赖这个库了,因为要使用他的注解,这个思路和ARouter已经没有什么区别了。当然ARouter现在好像一次只能发现一个服务,解决不了文中提到的批量派发服务的问题
Android模块化中的服务发现机制前言 本文讨论的其实是项目经过模块化后的一种情况,如果没有模块化需求其实是无所谓的。如果项目已经进行了模块化,推荐大家花几分钟看下。 需求 首先,我们来看一张常见的模块化后的...
@大空ts翼 可以的,本来就是为跨模块通信设计的
Android模块化中的服务发现机制前言 本文讨论的其实是项目经过模块化后的一种情况,如果没有模块化需求其实是无所谓的。如果项目已经进行了模块化,推荐大家花几分钟看下。 需求 首先,我们来看一张常见的模块化后的...
@大空ts翼 不是很明白你的意思,一般来说跨模块通信都会在两个隔离模块的底层模块中增加一个接口,这个接口的实现在目标模块,这样就可以通过这个接口去调用目标模块的功能,你提到的判断是判断什么呢?某个模块特有的话列表中就只有这一个服务,也不影响啊
Android模块化中的服务发现机制前言 本文讨论的其实是项目经过模块化后的一种情况,如果没有模块化需求其实是无所谓的。如果项目已经进行了模块化,推荐大家花几分钟看下。 需求 首先,我们来看一张常见的模块化后的...
@yoyochoo 混淆这块确实要注意,还有注册其实是要手动指明meta-data中的value的,无法做到自动注册,毕竟可能有多个服务,除非对这个value做特殊限制,比如要求必须以“sp_”开头,这样我们就可以全自动注册。但这样还有一个缺点,如果开发人员一不小心在xml中指定的类出了错误,我们无法及时发现,只有在使用时才会crash,相当于埋了雷。目前我的注册是:public static void register(Context context, String metaDataValue, Class clz) ,这里强制要求传入实现类的class,这样可以做个检查,防止出错。
Android模块化中的服务发现机制前言 本文讨论的其实是项目经过模块化后的一种情况,如果没有模块化需求其实是无所谓的。如果项目已经进行了模块化,推荐大家花几分钟看下。 需求 首先,我们来看一张常见的模块化后的...
@yoyochoo 哈哈,有帮助就好
Android模块化中的服务发现机制前言 本文讨论的其实是项目经过模块化后的一种情况,如果没有模块化需求其实是无所谓的。如果项目已经进行了模块化,推荐大家花几分钟看下。 需求 首先,我们来看一张常见的模块化后的...
我们都知道,Android是16ms刷新一帧,而通常我们所理解的刷新是“每个view的draw()方法被调用”,所以这里就有一个问题了,Android系统底层每隔16ms就发...
前言 在分析ConcurrentHashMap之前,希望大家先读完HashMap的源码,因为ConcurrentHashMap基本算法和HashMap是一致的,只是增加了并发...