2023年1月9日—2023年1月29日Android精品文章一览

7,358 阅读7分钟

大家好,又一度的精品文章推荐合集来了,由于期间过了一个年,所以这次统计的是2023年1月29日前过去三周看的Android精品文章

历史文章

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

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

2022年12月26日—2023年1月8日Android精品文章一览

一. 由浅入深,详解 ViewModel 的那些事

这篇文章对于ViewModel讲的比较透彻,专注于原理的分析,并且基于较新的VielModel版本,之前旧版本的View Model新增了很多东西,比如基于CreationExtra+SavedState实现带构造参数的ViewModel

这篇文章对于SavedState机制原理的分析非常的细致,但还是建议大家阅读时,打开AS ViewModel的源码对照着跟着文章一步步分析,不要眼高手低,这块的源码我看的时候感觉有些繁琐复杂的,大家认真多看几遍就好了。

文章内容不是很短,涉及到原理的比较枯燥,但是作为Jetpack中常用的重要组件之一,了解其原理还是有必要的,对使用、以后的面试都会有帮助的。

二. 基于 Android 系统方案适配 Night Mode 后,老板要再加一套皮肤?

过去的精品文章合集有推荐过另一篇换肤的文章:android 换肤框架搭建及使用 (3 完结篇),这篇文章换肤稍微重量级一些,当前的这篇文章讲的换肤更轻量级一些,不需要额外搞个皮肤包。

这篇文章主要是通过替换Resource,自定义资源的查找逻辑来实现简单换肤的,比如R.drawable.xxx尝试去寻找R.drawable.xxxx_blue是否存在等等,并且贴心的介绍了开发过程遇到的卡点以及解决办法,都对我们很有帮助。

阅读完这几篇换肤文章,相信你会对Android空间的加载以及拦截机制有更深入的了解,对于换肤功能的开发更加得心应手,面试中遇到换肤的问题相信也能脱口而出了。

三. Android自定义ViewGroup交互进阶,右滑进入详情

又是newki老哥写的一篇自定义ViewGroup的好文章,之前已经推荐过很多次他写的自定义View的好文章了,这篇文章同样很精彩。

通过实现我们日常生活中经常使用的App的某个界面切换效果,来引领我们深入了解自定义ViewGroup。强烈推荐大家跟着作者的代码敲一敲,完成后看到运行结果的画面还是很有成就感的。

大家通过学习会逐渐认识到,实现热门App各种各样的界面实现效果不再是过去无法想象的事情(至少对于我而言哈哈,自定义View很菜),神秘的面纱已经逐步向你揭开。

四. 你一定不知道的一个类加载问题(JVM 源码分析篇)

这篇文章主要是介绍了一个非常诡异的事情:明明一个没有调用的函数,其函数内部涉及到的类被JVM给加载了。

作者会非常仔细的带领大家从源码层面去分析这个问题产生的原因,同时还会一个分享有用的小技巧:通过添加运行参数打印当前程序被jvm运行所加载的类

文章阅读门槛不高,Android开发和使用Java的后端开发都可以去了解下这个知识点。

五. 费解,遇到的一个 JDK 序列化 Bug !

这个问题出现的场景属于日常开发中经常遇到的:多线程场景下并发对集合进行读写引发的崩溃。

通过阅读作者的本篇文章,你会了解到通过Collections.synchronizedList方法包装的集合在多线程下操作也不是完全安全的,接着带你分析源码来帮助你了解这个BUG产生的原因。

这里我这边根据作者最后的提示给出其中一种解决方法,请大家先去看了文章再看下这里给出的解决方法:

给红框中的增加一个代码块锁synchronize(list){}即可。

六. 为什么要选择VersionCatalog来做依赖管理?

Android依赖管理的方式有甚多,比如ext、buildSrc、includeBuild。当然这三种都各自有各自的有缺点,作者在文章中有对这三种方式进行一个简单概述。

此外,本篇文章作者核心讲述了gradle7.0提供的另一种依赖管理方式VersionCatalog,支持全局引用、依赖与版本号分离、依赖组等特性,强烈推荐大家动手跟着文章实操一遍。

七. Android 调试实战与原理详解

本篇又是网易云团队出品的一篇非常有质量的文章,讲解了非常详细的Android调试技巧,比如包括且不限于:

  1. 日志断点;
  2. 条件断点;
  3. 异常断点;
  4. adb基本架构介绍;

都是大家日常开发中常用到的技巧,非常的有帮助,强烈推荐大家阅读,相信一定能对你日常的工作带来帮助。

八. Android通知栏增加快捷开关的技术实现

这篇文章主要就是讲解下拉通知栏的快捷开发如何的创建、移除等,如下:

通过学习本篇文章,你可以通过自定义TileService实现一个自己的快捷开关,同时还能了解到TileService的两种监听模式: 主动模式、标准模式 这是一个属于扩充自身知识面的一个有用的知识点。

九. 由浅入深,详解 LeakCanary 的那些事

一个非常好的分析LeakCanary源码的精品文章,文章非常有条理,内容非常详实,借助于作者优秀的文字功底,笔者阅读起来也不会有太大的难度。

阅读完这篇你能学习到:

  1. LeakCanary如何实现对于Activity、Service等相关类的销毁监听;
  2. 了解LeakCanary检测内存泄漏的一整个流程,直接帮你打通;
  3. 学习到LeakCanary如何实现自动初始化的;

正值大家跃跃欲试向外冲的季节,收藏起这篇文章,补充面试的短板,这样你就能在面试的时候直接手撕LeakCanary源码,完善的叙述LeakCanary一整个内存泄漏的设计流程,赢得面试官大大的满意,收获多多的offer,加油吧!!

十. Kotlin SharedFlow&StateFlow 热流到底有多热?

又是一篇讲解的协程flow的好文章,作者会带领大家学习SharedFlow、StateFlow的使用、从源码分析其实现原理。我已经看了作者的很多篇文章,对于flow原理的分析还是到位的。

这里顺便说下,想要真的掌握热流的实现原理,那么对于热流flow的缓存设计一定要认识到位,下面这张图一定要搞懂:

建议认真阅读完这篇文章,同时不要错过作者其他优秀的kotlin协程相关文章,比如下面这些:

看到是不是馋的口水要流出来了,哈哈,大家记得阅读,一定会收获满满。

总结

这篇文章来的有点迟了,过年后一直懒得动笔!不管是想要去外面看看还是坚守岗位的Android开发们,大家平时一定要多学习,多看文章,养成一个良好的学习习惯,比如坚持每天看一篇掘金文章,打磨好自己的本领,这是非常关键的,工作中没有成长,你要通过其他方式给自己提供成长的环境。

希望大家日后路途越来越顺。