2023年1月9日—2023年1月29日Android精品文章一览
大家好,又一度的精品文章推荐合集来了,由于期间过了一个年,所以这次统计的是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调试技巧,比如包括且不限于:
- 日志断点;
- 条件断点;
- 异常断点;
- adb基本架构介绍;
都是大家日常开发中常用到的技巧,非常的有帮助,强烈推荐大家阅读,相信一定能对你日常的工作带来帮助。
八. Android通知栏增加快捷开关的技术实现
这篇文章主要就是讲解下拉通知栏的快捷开发如何的创建、移除等,如下:
通过学习本篇文章,你可以通过自定义TileService
实现一个自己的快捷开关,同时还能了解到TileService
的两种监听模式: 主动模式、标准模式
。 这是一个属于扩充自身知识面的一个有用的知识点。
九. 由浅入深,详解 LeakCanary 的那些事
一个非常好的分析LeakCanary
源码的精品文章,文章非常有条理,内容非常详实,借助于作者优秀的文字功底,笔者阅读起来也不会有太大的难度。
阅读完这篇你能学习到:
LeakCanary
如何实现对于Activity、Service等相关类的销毁监听;- 了解
LeakCanary
检测内存泄漏的一整个流程,直接帮你打通; - 学习到
LeakCanary
如何实现自动初始化的;
正值大家跃跃欲试向外冲的季节,收藏起这篇文章,补充面试的短板,这样你就能在面试的时候直接手撕LeakCanary
源码,完善的叙述LeakCanary
一整个内存泄漏的设计流程,赢得面试官大大的满意,收获多多的offer,加油吧!!
十. Kotlin SharedFlow&StateFlow 热流到底有多热?
又是一篇讲解的协程flow的好文章,作者会带领大家学习SharedFlow、StateFlow
的使用、从源码分析其实现原理。我已经看了作者的很多篇文章,对于flow原理的分析还是到位的。
这里顺便说下,想要真的掌握热流的实现原理,那么对于热流flow的缓存设计一定要认识到位,下面这张图一定要搞懂:
建议认真阅读完这篇文章,同时不要错过作者其他优秀的kotlin协程相关文章,比如下面这些:
看到是不是馋的口水要流出来了,哈哈,大家记得阅读,一定会收获满满。
总结
希望大家日后路途越来越顺。
转载自:https://juejin.cn/post/7204860462239744056