2022年11月28日—2022年12月11日Android精品文章一览

4,692 阅读8分钟

最近准备搞个专栏,专门整理推荐一些我已经阅读过的好文章,尽可能保证文章能给你带来技术上的提升,毕竟掘金上推荐的文章不一定都符合大家的口味、需求。计划每两周输出一篇文章,主要包括过去两周我所阅读的还不错的、给我带来帮助的十篇文章,也希望能给你们带来帮助。

这篇文章统计的是2022年11月28日—2022年12月11日期间阅读过的十篇精品文章,本来老早就打算开这个专栏来着。由于之前写的2022年12月12日—2022年12月25日Android精品文章一览,大家伙的反响还不错:

image.png

就逐步将之前阅读的文章也按照两周的形式补一补哈。

历史文章

2022年12月12日—2022年12月25日Android精品文章一览

一. Android自定义ViewGroup的布局,往往都是从流式布局开始

当前这篇文章是属于基本讲解的,还有作者写的另一篇进阶的实战文章:Android自定义ViewGroup布局进阶,完整的九宫格实现.

自定义ViewGroup最重要的就是重写并处理onMeasure()onLayout()这个方法,这两篇文章分别通过案例的方式讲解onMeasure()onLayout()如何使用,从实践中去学习知识,非常好的一种方式,而且文章也是很容易理解。

想要了解自定义ViewGroup的同学们一定不要错过这两篇文章,学会了,自定义ViewGroup的小基础咱们可就是打下了哈。

二. Android - 混淆 java-library 工程

众所周知,Android工程项目是可以被混淆的,不管是com.android.applicatio还是com.android.library对应的库,创建后都可以在buildTypes{}中确定是否可以开启混淆的,并且还会生成proguard-rules.pro配置文件。

但是对于java-library工程默认就没有提供混淆配置,所以这篇文章就可以带你入门如何在java-library配置混淆,并且还很贴心的在文章的末尾给了完整代码的实现,大家有需要的可以去看下这篇文章。

三. 这10张图拿去,别再说学不会RecyclerView的缓存复用机制了!

RecyclerView最为优秀的一个设计就是其缓存机制,通过回收-复用等机制极大提高我们列表的渲染性能。所以了解其缓存实现原理,不仅仅能加深我们对RecyclerView整体的理解,更能通过了解的缓存机制知道该如何正确使用RecyclerView、如何正确使用RecyclerView.Adapter等等,提高代码质量的同时,使得列表的加载性能更加优秀,列表显示滑动更加流畅。

这篇文章不仅给你分析缓存相关源码,还通过非常生动形象的图片展示缓存源码如何进行工作的,建议大家一定要去看一看,毕竟RecyclerView是个高频使用的组件,原理还是要有一定的了解的。

四. Kotlin Flow 背压和线程切换竟然如此相似

这篇文章主要是讲解flow背压的,首先带你了解什么是背压、背压一般的处理方式,最终直接通过一个解决背压的官方库实践案例:flow.buffer()进行原理分析,一步步的带你去认识、了解、掌握这个所谓的背压。

背压我是早就知道了,而读完这篇文章最大的收获就是flow.buffer()的工作原理了解清楚了,触类旁通,flowOn()线程切换的原理也同样了解了,作者对这块源码的分析还是很到位的。

请注意,这篇文章分析的源码想要看的明白,需要大家对Channel有一个基本的了解。

五. Kotlin协程之一文看懂Channel管道

前面Channel如果没了解的同学,看完这篇文章你就懂了。

作者对于Channel的常见的几种使用方式进行了基本的介绍,同时对于Channel几种构造类型进行了分析,涉及到部分源码分析,但不多,点到即止,不会让你感觉枯燥。

Channel也是flow重要的组成部分之一,了解其对于了解flow整体的源码有着非常重要的作用,建议大家去看一看。

六. 深入浅出 Compose Compiler(4) 智能重组与 $changed 参数

重组是Compose中非常关键的重要的一个操作,关乎着应用的性能,触发的太频繁的肯定是不太好的,而重组是否触发和涉及到使用参数的类型稳定性有着重要的关联,不稳定一定就会触发重组

这篇文章从源码的角度带你深入分析,编译器是如何智能判断是否需要重组的,通过阅读文章,你将对Compose重组的概念理解的更加透彻,同时帮助你写出更高质量的代码,减少不必要重组的发生。

我一开始学习Compose时,对于重组的概念看官方文档也是没有看懂,直到看了作者写的一系列compose重组相关的文章之后,才明白什么是稳定类型、@Stable注解如何使用、怎么尽量避免不必要的重组等等,强烈推荐大家阅读的好文。

七. 【Gradle-5】Gradle常用命令与参数

这篇文章主要是介绍了Gradle常见的命令使用,比如常见查看依赖、安装/卸载应用等等。最后面讲了如何通过gradle动态参数的一个知识,这个在我们日常开发中也是非常有用的。

比如在打包脚本中,我们可以根据当前所在的生产环境决定打出是debugrelease或者其他类型的包,而如果我们的项目也想要知道当前的生产环境,那我们就可以在这个打包脚本中,通过gradle assembleXXX -Pxxx=xxx的方式将环境参数传给我们的项目进行使用,具体的使用详情可以阅读下文章即可。

八. 为什么计算机中的负数要用补码表示?

这个老哥上个月非常的高产,而且所写的文章也是质量很高的,这里拿出其中最近阅读的一篇好文分享给大家。

这篇文章详细介绍了什么是补码、补码的转换以及补码被设计的意义,尤其是文章后面对补码设计的原理进行了一番详细的分析,逻辑清晰又有条理,相信你仔细好好的阅读完这篇文章后,有种恍然大悟的感觉,对于补码的理解将会更上一个层面。

我最大的收获就是理解了补码被设计的原理以及发挥的作用,真的非常感谢作者的分享。

九. 每次调试打印日志都很头痛

这篇文章的作者也是非常优秀的,在掘金输出了一大批好文章,特别是关于kotlin知识的讲解、RecyclerView源码的分析非常的精彩,我Kotlin当初入口基本上就是看的作者写的文章。

当前这篇文章给我们分享了以更加优雅的方式去打印集合日志,涉及到了Kotlin的反射相关知识点,对于kotlin常见的语法也会穿插在文章中进行讲解的,对于读者而言,非常的友好,不用太过于文章阅读门槛很高,作者的其他文章也都是如此。

十. 从源码里的一个注释,我追溯到了12年前,有点意思。

这篇文章主要针对于HashMap源码中的一个语法点成员变量赋值给局部变量进行了一个分析讨论,这个是大神Doug Lea经常使用的一种极限编码技巧。

作者首先通过几组对照例子,带我们从字节码的角度去分析这些写有什么好处,最后面引用了很多大佬对这个编程技巧的观点,看着不同的思维火花发生碰撞,文章阅读起来丝毫不觉得无聊,反而十分的有趣。

文章看起来内容比较长,但实际的主题只有一个,都是针对于这个展开分析,而且通俗易懂,阅读起来没有任何障碍,最后面围观各个大佬们的观点,蛮有意思的。

总结

感觉最近掘金某些文章刷赞刷的非常厉害,很明显的文章,先不说内容如何,就这刷赞的速度是真的快,所以感觉自己推出这个专栏越来越有必要的,希望能给大家避避坑,节省时间多阅读写好文章。