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

語言: CN / TW / HK

highlight: vs theme: devui-blue


最近準備搞個專欄,專門整理推薦一些我已經閲讀過的好文章,儘可能保證文章能給你帶來技術上的提升,畢竟掘金上推薦的文章不一定都符合大家的口味、需求。計劃每兩週輸出一篇文章,主要包括過去兩週我所閲讀的還不錯的、給我帶來幫助的十篇文章,也希望能給你們帶來幫助。

一. 懸浮窗開發設計實踐

本篇文章主要是詳細介紹瞭如何開發一個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()方法實現原理掌握於心。整體上對協程的機制有一個更深入的瞭解了,這對於後續協程源碼的閲讀、閲讀其他協程原理分析性的文章都有着不小的幫助。

總結成一句話,我不但會使用你,我還能實現你,這就很牛了。

總結

這是精品文章推薦系列的第一篇,主要是看看大家的反應如何,比如點贊、收藏多不多哈哈,其實最重要的是這些大家一定要去看一看,保持良好的閲讀習慣,日積月累,拓寬自身知識面的廣度,加深技術深度,相信你會變得越來越優秀。

最後説一句,感謝掘金平台,感謝這些文章的作者,不斷的給我們有限的知識面開拓邊際。