会在每周一或者周二给大家推送一期技术文章精选合集,这周作为第6期。微信内限制外链点击,大家可以点击左下角阅读原文,支持外链查看。[1]Gradle 进阶(一):深入了解 Tasks:Gradle自定义Task看起来非常简单,通过tasks.register等API就可以轻松实现。但实际上为了写出高效的,可缓存的,不拖慢编译速度的task,还需要了解更多知识,本文主要包括以下内容:
[2]为什么各大厂自研的内存泄漏检测框架都要参考 LeakCanary?因为它是真强啊!:LeakCanary 源码中除了实现内存泄漏的监控方案外,还有非常多值得学习的编程技巧,只有沉下心去阅读的人才能够真正体会到。在这篇文章里,我将带你从入门开始掌握 LeakCanary 的使用场景以及使用方法,再介绍 LeakCanary 的工作流程和高级用法,最后通过源码解析深入理解原理。
[3]【知识点】OkHttp 原理 8 连问:本文主要包括以下内容:OKHttp请求的整体流程是怎样的?
OKHttp分发器是怎样工作的?
OKHttp拦截器是如何工作的?
应用拦截器和网络拦截器有什么区别?
OKHttp如何复用TCP连接?
OKHttp空闲连接如何清除?
OKHttp有哪些优点?
OKHttp框架中用到了哪些设计模式?
[4]Android:解决 MVI 架构实战痛点:通过本文可快速了解:3.repeatOnLifecycle + SharedFlow 实现 MVI 思路
[5]Kotlin | 关于协程异常处理,你想知道的都在这里:关于协程的异常处理,一直以来都不是一个简单问题。因为涉及到了很多方面,包括 异常的传递,结构化并发下的异常处理,异常的传播方式,不同的Job 等,所以常常让很多(特别是刚使用协程的,也不乏老手)同学摸不着头脑。常见有如下两种处理方式:2. CoroutineExceptionHandler但这两种方式(特别是第二种)到底该什么时候用,用在哪里,却是一个问题?
[6]【视频】Android ANR,敏捷开发 -张顺伟,赵伟楠
[7]【视频】面试题
[8]【视频】如何缓解焦虑抑郁情绪,面经 - 马荣,yechaoa
[9]【视频】面试经验分享 - 王建洲
[10]【视频】Android 单元测试 - 育禧
[11]【视频】Android Compose 分享 - codelang
6~11均为各位大佬分享的视频,视频链接为bilibili,大家安心享用。此外后续会在 wanandroid上持续更新:
[12]深入理解Android Runtime:Android Runtime之于Android而言相当于心脏之于人体,是Android程序加载和运行的环境。这篇文章主要针对Android Runtime部分进行展开,探讨Android Runtime的发展以及目前现状,并介绍应用Profile-Guided Optimization(PGO)技术对应用启动速度进行优化的可行性。[13]framework | Android系统架构 - 掘金:Android系统架构的分层,一共5层,从上到下依次是应用层、应用框架层、系统运行库层、硬件抽象层和Linux内核层。我们先简单介绍一下这几层的作用,然后再从进程角度从新来看。![]()
[14]JNI入门简要指南 - 掘金:JNI 入门文章,包含:
[15]如何轻松形象的理解Binder (1)?- 掘金:在做Framework之前呢,从事应用层开发的时候,有时候也会用到AIDL,了解到底层是用Binder实现,看了网上关于Binder的文章之后,整个人陷入了一个懵圈的状态,Binder到底是个啥?首先确定的一点,我们知道Binder是用来做跨进程通信使用的.那么我们知道跨线程通信用Handle,跨进程通信的特点是什么呢?
[16]换个姿势,十分钟拿下Java/Kotlin泛型 - 掘金:看到泛型这一章时,想起之前面一家小公司时的面试题:说下你对泛型协变和逆变的理解?读者可以试试在不查资料的情况下能否答得上来?第一部分总结了Android开发中常见的稳定性相关的问题;第二部分简单地认识了OOM的分类以及治理办法,并且介绍了快手KOOM对OOM治理上面做的贡献,以及接入KOOM的一些问题;
[18]电量优化 - 电量的统计原理与监控:当我们说一个 App 耗电的时候我们在说什么?我们可能是指 App 吃 CPU 导致系统掉电快,也可能是在说系统告警 App 后台扫描频繁消耗电量,还可能是在说使用 App 时手机发烫严重…… 是的,相对于 Crash、ANR 等常见的 APM 指标,Android App 电量优化更像是一个综合性的问题。
[19]LruBitmapPool如何具体操作Bitmap复用?:最近由于项目优化需求,有一个RecycleView列表中的每个子item中可能会包括很多网络图片,当这个列表中存在很多图片的时候,就会从本地加载图片生成大量Bitmap,以至于存在引发OOM的风险。由于Glide本身就实现了一套Bitmap复用机制,所以接下来我们就来分析下这块原理,其中Glide中实现Bitmap复用的类为LruBitmapPool。
[20]【写作提升】为什么建议你一定要学会写作? :写作是工作中和生活中应用非常广泛、影响力非常大的一项技能。本文希望通过建立一套全新认知,让你从本质上意识到写作的重要性,下定决心学好写作。
[21]Android 官方开源App,来看看更佳实践吧:本篇文章将会以 Now in Android 项目为例,讲解 Android 官方 App 模块化相关知识及策略。[22]当我们点击“微信”这个应用后,它是怎么在屏幕上显示出来的?:“当我们点开‘微信’这个应用后,它是怎么在屏幕上显示出来的?”这是一个非常复杂的问题,它的背后包含了由厂商驱动、Linux操作系统、HAL硬件抽象层和Android ,想要给出这个问题的答案,就必须对Android图形子系统背后的运行流程有所了解。今天,我们从认识Android设备中的硬件开始,自下而上,一起来看看庞大的Android图形子系统是如何组建起来的。[23]Android实现倒计时的6种方案汇总:关于倒计时可以说我们App开发中常见的一种场景了,比如Splash倒计时跳转首页,比如发送短信之后倒计时60秒显示等等。关于倒计时的实现方式,大家可能有不同的做法,这里做一下总结看看你使用的是哪一种呢?
[24]Android Memory(一) -- 内存基础知识:在工作这几年,我一直深受内存问题的困扰,在和内存的不断抗争中,我逐渐积累了一些内存的知识,接来下来我会用几篇文章简单记录一下这几年的我学到的内存相关的经验。另外,本系列文章不去过多的分析Linux底层代码,只是探讨遇到内存问题时的解决方法论。友情提醒:微信内限制外链点击,大家可以点击底部左下角阅读原文,支持外链查看。
引用链接
[1]Gradle 进阶(一):深入了解 Tasks
https://juejin.cn/post/7135065142768697380
[2]为什么各大厂自研的内存泄漏检测框架都要参考 LeakCanary?因为它是真强啊!
https://juejin.cn/post/7134728428003000356/
[3]【知识点】OkHttp 原理 8 连问
https://mp.weixin.qq.com/s/Yk43ZJfOOBvS4SYjrIVzwA
[4]Android:解决 MVI 架构实战痛点
https://juejin.cn/post/7134594010642907149
[5]Kotlin | 关于协程异常处理,你想知道的都在这里
https://mp.weixin.qq.com/s/mgARwQ0VHbx-24harNFcJg
[6]【视频】Android ANR,敏捷开发 -张顺伟,赵伟楠
https://www.bilibili.com/video/BV1oT411c7hm?spm_id_from=333.999.0.0&vd_source=f43def12c6eccac37abb1f5d026db37a
[7]【视频】面试题
https://www.bilibili.com/video/BV1zN4y1V7sK?spm_id_from=333.999.0.0&vd_source=f43def12c6eccac37abb1f5d026db37a
[8]【视频】如何缓解焦虑抑郁情绪,面经 - 马荣,yechaoa
https://www.bilibili.com/video/BV19W4y1b7bi?spm_id_from=333.999.0.0&vd_source=f43def12c6eccac37abb1f5d026db37a
[9]【视频】面试经验分享 - 王建洲
https://www.bilibili.com/video/BV1VB4y1V747?spm_id_from=333.999.0.0&vd_source=f43def12c6eccac37abb1f5d026db37a
[10]【视频】Android 单元测试 - 育禧
https://www.bilibili.com/video/BV1dW4y1h7jd?spm_id_from=333.999.0.0
[11]【视频】Android Compose 分享 - codelang
https://www.bilibili.com/video/BV1rW4y1b7vu?spm_id_from=333.999.0.0
[12]深入理解Android Runtime
https://mp.weixin.qq.com/s?__biz=MzUzODk5NjE3OQ==&mid=2247484110&idx=1&sn=66ca070fa521af9de6466c6f21bf7112&chksm=face7e72cdb9f764abdb11071a853ef4c7207b4fdd048b512fe0ab71fa67a081930ef7d52d6a&token=798344369&lang=zh_CN#rd
[13]framework | Android系统架构 - 掘金
https://juejin.cn/post/7133873028139581470
[14]JNI入门简要指南 - 掘金
https://juejin.cn/post/7133601846832136206
[15]如何轻松形象的理解Binder (1)?- 掘金
https://juejin.cn/post/7133523750917505055
[16]换个姿势,十分钟拿下Java/Kotlin泛型 - 掘金
https://juejin.cn/post/7133125347905634311
[17]APP稳定性问题汇总与KOOM的预研
https://www.jianshu.com/p/da8fe5175401
[18]电量优化 - 电量的统计原理与监控
https://www.jianshu.com/p/672d008c4ad3
[19]LruBitmapPool如何具体操作Bitmap复用?- 掘金
https://juejin.cn/post/7133243966052368392
[20]【写作提升】为什么建议你一定要学会写作? - 掘金
https://juejin.cn/post/7132658841728057351
[21]Android 官方开源App,来看看更佳实践吧
https://mp.weixin.qq.com/s/CO2PWMm_q98so3k4Q0hl1A
[22]当我们点击“微信”这个应用后,它是怎么在屏幕上显示出来的?
https://juejin.cn/post/7132777622487957517
[23]Android实现倒计时的6种方案汇总
https://mp.weixin.qq.com/s/5BENEushP6Yjoae5gvDX0w
[24]Android Memory(一) -- 内存基础知识
https://juejin.cn/post/7098257692828893220