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

3,451 阅读7分钟

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

一. 悬浮窗开发设计实践

本篇文章主要是详细介绍了如何开发一个Android应用的全局悬浮窗,类似于微信的视频通话界面,当退出该界面时,应用界面上就会显示一个缩小版的视频通话悬浮窗。

这篇文章首先帮助大家分析了Android窗口的类型界面的渲染机制:从ViewRootImpl.setView到WMS管理Window窗口再到SurfaceFlinger等等,让大家对Android的窗口有一个基本的认识。

有了前面的铺垫工作之后,就开始详细介绍了悬浮窗的开发流程、权限问题、窗口类型适配等等,最后还给出了开发过程中碰到的一系列坑及解决办法。

阅读完这篇文章,你会对Android的窗口机制、渲染流程有一个基本的认识,同时掌握如何开发一个应用全局悬浮窗。

二. 一文搞定Base64编码原理足矣

本篇文章主要是介绍了什么是Base64编码、Base64整个的编码流程是什么样的,以及通过举例子的方式带我们一步步完整了解如何从原字符串转换成Base64编码

最后分析了Base64编码能给我们日常开发带来什么便利。

文章整体上通俗易懂,短小精悍。

三. 广播 goAsync 源码分析,为什么 Google 大佬都在使用它

这篇文章算是又给我的技能树增加了一个分支,以前从未了解过广播goAsync()相关知识。

文章在具体介绍goAsync()前,先介绍下广播相关知识点作为准备工作:

  1. 首先了解到广播的两种方式、广播执行相关的基本源码逻辑;

  2. 其次了解广播的执行在进程优先级中扮演者什么样的角色;

经过前面的准备工作,然后带着你分析goAsync()的源码逻辑,到这里你就能知道goAsync()到底用来干什么的,最后文章还举了一个Android源码中的goAsync()使用的例子来帮助我们加深对其的了解。

四. 包体积优化系列

主要是作者的三篇相关系列文章:

包体积优化 · 工具论 · 初识包体优化

包体积优化 · 方法论 · 揭开包体优化神秘面纱

包体积优化 · 实战论 · 怎么做包体优化? 做好能晋升吗? 能涨多少钱?

这三篇文章内容非常的详尽丰富,让你对包体积优化有一个清晰的认知,介绍了很多的优化技巧、方向以及相关的工具,有些地方我也看的不是很懂,不过能有个印象就行,但是能看懂的地方学到就是赚到,强烈推荐大家抽个时间,耐心的看下这三篇文章,相信会对你有个很大的帮助。

五. 西瓜视频apk瘦身之 Java access 方法删除

这篇文章算是对上面应用包体积的一个延续,我感觉写的很好,单独抽了出来。

之前没有了解过Java access机制,所以读完这篇文章又掌握了一个对我而言新的知识点,真的非常的开心。

java内部类、外部类互相之间私有属性的访问为了避免Java封装性的破坏,会间接增加很多的access类型方法,对于Android而言,方法多了可不是要给特别好的事情,一个很明显的影响就是增加应用软件包大小。

所以这篇文章详细介绍了java access存在机制,以及如何在编译期间删除这些方法,减少应用包体积大小,最后给出了开发过程中碰到的问题及解决方式,相信阅读完这篇文章,会有不小的收获。

六.Android 线上卡顿监控

如何避免应用卡顿是一个老生常谈的话题,这篇文章深入浅出的分析了卡顿与ANR的区别、卡顿的原理以及如何去监测卡顿卡顿的监测会碰到哪些问题、如何去解决,写的非常的通俗易懂。

我之前看过很多篇应用卡顿相关的文章,这篇文章是写的非常不错的一篇文章,强烈推荐大家阅读。

这篇文章对我而言最大的收获之一就是,之前老是听说触摸事件的分发和nativePollOnce()有关系,怎么个关系法不知道,看了这篇文章我终于懂了

七. ANR 触发、监控、分析 一网打尽

这篇文章的作者和上面第六篇文章的作者都是同一人,同样的文章写的非常的详尽,逻辑条理清晰。

文章详细的介绍了ANR触发机制以及如何进行监控,最后带来的ANR常见案例分析,整个文章读起来一气呵成,讲解的又十分细致,不光是侧重原理的分析,更重要的是对于监控机制的分析非常的到位,也是一篇难得的好文章。

当前阅读完六、七这两篇文章后,你会对应用的卡顿、ANR机制掌握的更加深入,认识的更到位,属于非常实用的知识技巧。

八. 读懂 gradle dependencies

这个是网易云团队写的一篇文章,大家感兴趣的可以看下他们主页,最近写的几篇文章都挺不错的。

这篇文章详细的介绍了gradle依赖的一些细节,比如依赖树中的->(c)(*)是什么,属于非常非常实用的技巧,学会后,同事们再也不用担心我看不懂命令行输出的gradle依赖图谱了。

九. App 黑白化技术实践下篇

这是黑白化文章的下篇,大家在看这篇文章之前,可以看下黑白化的上篇文章:App 黑白化技术实践上篇

前段时间大家可以随处看到,应用、网页、小程序等等都黑白化了一段时间,这两篇文章就是详细的讲解了如何实现Android黑白化,其中:

  • 上篇文章介绍了黑白化实现的几种技巧,以及存在哪些弊端

  • 下篇文章介绍了黑白化实现的最终全面的方案,需要你对Android渲染机制有个简单的了解就行

看完之后,实现一个应用的黑白化对你来说就没问题了,属于手到擒来。

十. 聊一聊Kotlin协程"低级"api

文章作者的写作文章主要是偏向于Android APM方向,看了其写的很多篇文章,都很不错,推荐给大家。

这篇文章并没有带你去分析很枯燥的Kotlin协程的源码,相反的换个角度,手把手教你如何实现一个大家常用async-await机制

建议大家一定要跟着作者手动的写一下代码,完成之后,你就会对协程的底层API使用、拦截器等有了一个基本的认识,对于官方提供的async()await()方法实现原理掌握于心。整体上对协程的机制有一个更深入的了解了,这对于后续协程源码的阅读、阅读其他协程原理分析性的文章都有着不小的帮助。

总结成一句话,我不但会使用你,我还能实现你,这就很牛了。

总结

这是精品文章推荐系列的第一篇,主要是看看大家的反应如何,比如点赞、收藏多不多哈哈,其实最重要的是这些大家一定要去看一看,保持良好的阅读习惯,日积月累,拓宽自身知识面的广度,加深技术深度,相信你会变得越来越优秀。

最后说一句,感谢掘金平台,感谢这些文章的作者,不断的给我们有限的知识面开拓边际。