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()方法實現原理掌握於心。整體上對協程的機制有一個更深入的瞭解了,這對於後續協程原始碼的閱讀、閱讀其他協程原理分析性的文章都有著不小的幫助。

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

總結

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

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