Android 技術週刊(第8期):又來了 22 篇,優化有點多~

語言: CN / TW / HK

會在每週一或者週二給大家推送一期技術文章精選合集,這周作為第8期。

微信內限制外鏈點選,大家可以點選左下角閱讀原文,支援外鏈檢視。

[1]反思:Google 為何把 SurfaceView 設計的這麼難用?: 如果你有過 SurfaceView 的使用經歷,那麼你一定和我一樣,曾經被它所引發出 層出不窮的異狀 折磨的 懷疑人生—— 畢竟,作為一個有理想的開發者,在深入瞭解 SurfaceView 之前,你很難想通這樣一個問題:

為什麼 Google 把 SurfaceView 設計的這麼難用?

[2]別濫用FileProvider了,Android中FileProvider的各種場景應用: 有部分同學只要是上傳或者下載,只要用到了檔案,不管三七二十一寫個 FileProvider 再說。

但, 不是每一種情況都需要使用 FileProvider 的

[3]監控Android Looper Message排程的另一種姿勢: 在Android 10版本,系統為Looper類添加了專門的 Observer類用來觀測Looper的訊息排程。

因此除了通過設定Looper物件的 printer屬性外,也可以通過設定Looper類的Observer屬性來實現監控。

本文主要分享使用Looper Observer 進行訊息排程觀測過程中的遇到的問題及解決方式。

[4]Android虛擬機器執行緒啟動過程解析, 獲取Java執行緒真實執行緒Id的方式: 最近在專案開發中遇到一個場景,需要監控某個Java執行緒 的cpu使用率資訊,這需要通過讀取/proc/pid/task/{pid}/task/pid/task/{tid}/stat 檔案來實現,這裡的tid是系統層級執行緒ID,而 Java層的 Thread物件提供的API無法獲取對應的系統層級執行緒id。

因此重新閱讀了下ART虛擬機器執行緒相關的原始碼。 本文是對ART虛擬機器Java執行緒建立過程原始碼學習的一個總結,並在文章最後,實踐了獲取Java執行緒tid。

[5]個推解讀Android13,釋出《Android13適配指南》 :

本文將從許可權變更、系統優化、功能更新等方面來談談Android13新特性,以幫助開發者快速上手完成Android新系統的適配。

[6]Android 效能優化系列(一):包大小優化

[7]AOP思想與外掛化技術在安卓上的實踐應用: 在安卓平臺上也有一些AOP的工具框架,包括AspectJ,JavaSsist,ASMDex,DexMaker。

本文則介紹了AOP的一些基本概念,然後結合使用AspectJ和dynamic feature外掛化技術,設計開發一款安卓app視覺化的時延測試工具。

[8]Android人涅槃重生之路: 相信很多人跟我一樣,當我心血來潮想要學習的時候,卻總是無從下手,到底從何學起呢?一想再想,還是不學了吧,太難了,自從去年5月加入滴滴以來,一共只輸出了8篇部落格,是什麼讓我放緩了腳步,是工作壓力?還是自己變的懶惰了?當然都有哈,時至今日,再看看目前的行情,如果想讓自己立於不敗之地,我決定來一次涅槃重生,從零開始。

[9]Android 自定義一個隨意拖拽的懸浮View: 隨意拖拽可吸邊的懸浮View還是比較常見的,這種功能網上也有各種各樣的輪子,其實寫起來並不複雜,看完本文,你也可以手寫一個,而且不到400行程式碼就能實現一個通用的隨意拖拽可吸邊的懸浮View元件。

[10]Android-Widget重灌上陣: 如果要在Android系統中找一個一直存在,但一直被人忽略,而且有十分好用的功能,那麼Widget,一定算一個。

這個從Android 1.x就已經存在的功能,經歷了近10年的迭代,在遭到無數無視和白眼之後,又重新回到了大家的視線之內,當然,也有可能是App內部已經沒東西好捲了,所以大家又把目光放到了App之外,但不管怎樣,Widget在Android 12之後,都開始煥發一新,官網鎮樓,讓我們重新來了解下這個最熟悉的陌生人。

[11]Android效能優化 -- 記憶體優化 : 記憶體,是Android應用的生命線,一旦在記憶體上出現問題,輕者記憶體洩漏,重者直接crash,因此一個應用保持健壯,記憶體這塊的工作是持久戰,而且從寫程式碼這塊就需要注意合理性,所以想要了解記憶體優化如何去做,要先從基礎知識開始。

[12]Android重學系列(四): NDK實現一個加解密演算法:NDK 學習的 Demo~

[13]Flutter 學習與效能優化總結: 有幸負責的模組使用Flutter編寫,在三個月的開發過程中,在原有Demo自學基礎上又學到了很多,謹以此篇文章做一個Flutter階段性的學習和總結,以便於往後的學習過程中溫故而知新,那麼我們正篇開始。

[14]還用第三方庫管理狀態列嗎?Android關於狀態列管理的幾種方案實現!: 狀態列說的就是我們頂部的那個大黑邊了,一個應用的狀態列,我們一般常用的幾種操作如下:

  • 設定狀態列的背景顏色(如果是6.0以下需要相容處理白色背景)

  • 設定狀態列的背景圖片

  • 設定狀態列開啟沉浸式和關閉沉浸式

  • 設定狀態列文字圖示顏色(黑色與白色)

  • 設定指定佈局適配狀態列高度

[15]心遇 Android 啟動優化實踐: 將啟動時間降低 50% :經過 5 個月的優化實踐,心遇線上平均啟動時長從 8 秒多降低到 4 秒左右,啟動時長減幅超過 50%,其中啟動階段降低 3.7秒,首幀首刷時長降低了 0.4秒。啟動優化作為效能優化專案的重要組成部分,已經成功達到了預期的基線目標。

[16]系統應用根據Uri授予許可權的正確姿勢 : 在我們印象中,Android6.0以後訪問外部的媒體資原始檔都是需要申請READ_EXTERNAL_STORAGE才可以正常訪問,思考一個場景,假如我們不申請該許可權,使用系統的Intent.ACTION_PICK意圖跳轉系統相簿選取圖片是否可以正常顯示該圖片?

答案是可以的,這是為什麼呢?我們都沒有申請許可權,或者說是誰給了我們這個許可權?帶著這個疑問我們先來了解下UriPermission。

[17]乾貨 | 從47%到80%,攜程酒店APP流暢度提升實踐: 整個APP流暢度治理中,從流暢率從初始47%提升到目前80%,頁面慢載入率從原來的45%降低到現在的8%,白屏率從1.9%降至現在的0.3%,主流程頁面控制元件閃動基本消除,APP效能及使用者體驗有了較明顯的提升。

[18]Android 築基導論: 今天分享一下,包括一些學習資料,但是更重要的是明明白白的告訴大家,你為什麼學不會、怎麼才能學的好、怎麼學習才是效率最高的。

[19]【影片】個人網站搭建

[20]【影片】日常用到的輔助、逆向入門

19~20 為Bagutree的每週技術分享內容,注意是影片錄屏哈。

[21]神奇的Compose - 效能監控篇: 判斷我們compose效能是否好壞,沒錯,官方也提供了相關的檢測手段!Interpreting Compose Compiler Metrics。

[22]Flutter:使用GetX編寫wanandroid專案: 在編寫完RxSwift的wanandroid客戶端之後,我一直都在猶豫是否需要將Flutter的wanandroid客戶端進行重構,這個專案我主要是通過GetX框架進行搭建,通過WanAndroid開放API製作。

友情提醒:微信內限制外鏈點選,大家可以點選底部左下角閱讀原文,支援外鏈檢視。

引用連結

[1]反思:Google 為何把 SurfaceView 設計的這麼難用?- 掘金

https://juejin.cn/post/7140191497982312455

[2]別濫用FileProvider了,Android中FileProvider的各種場景應用 - 掘金

https://juejin.cn/post/7140166121595863076

[3]監控Android Looper Message排程的另一種姿勢

https://juejin.cn/post/7139741012456374279

[4]Android虛擬機器執行緒啟動過程解析, 獲取Java執行緒真實執行緒Id的方式

https://juejin.cn/post/7138690370694545415

[5]個推解讀Android13,釋出《Android13適配指南》 - 掘金

https://juejin.cn/post/7139772964639080485

[6]Android 效能優化系列(一):包大小優化 - 掘金

https://juejin.cn/post/7139799637879160862

[7]AOP思想與外掛化技術在安卓上的實踐應用

https://mp.weixin.qq.com/s/DxYiLDkYjL0WeRuLNLPQAg

[8]Android人涅槃重生之路

https://mp.weixin.qq.com/s/vWJLXCl-LCY_YduPGQqJkw

[9]Android 自定義一個隨意拖拽的懸浮View

https://mp.weixin.qq.com/s/YGj3AvKAOen88tWnDItjyQ

[10]Android-Widget重灌上陣

https://mp.weixin.qq.com/s/jIL9OhTquBSbtPEd_o85-g

[11]Android效能優化 -- 記憶體優化 - 掘金

https://juejin.cn/post/7134252767379456014

[12]Android重學系列(四):NDK實現一個加解密演算法的騷操作 - 掘金

https://juejin.cn/post/7137706719098404871

[13]Flutter 學習與效能優化總結

https://juejin.cn/post/7072249679773171725

[14]還用第三方庫管理狀態列嗎?Android關於狀態列管理的幾種方案實現!- 掘金

https://juejin.cn/post/7138312796474703909

[15]心遇 Android 啟動優化實踐:將啟動時間降低 50% - 掘金

https://juejin.cn/post/7138596300672958471

[16]系統應用根據Uri授予許可權的正確姿勢 - 掘金

https://juejin.cn/post/7138335779222355975

[17]乾貨 | 從47%到80%,攜程酒店APP流暢度提升實踐

https://mp.weixin.qq.com/s/tn7OkkiEHzT3xK_rgjJnjA

[18]Android 築基導論 - 掘金

https://juejin.cn/post/6870111983933325319

[19]【影片】個人網站搭建

https://www.bilibili.com/video/BV1GU4y1z79G?spm_id_from=333.999.0.0&vd_source=f43def12c6eccac37abb1f5d026db37a

[20]【影片】日常用到的輔助、逆向入門

https://www.bilibili.com/video/BV1xd4y1R7UY?spm_id_from=333.999.0.0&vd_source=f43def12c6eccac37abb1f5d026db37a

[21]神奇的Compose - 效能監控篇

https://juejin.cn/post/7139328582836289566

[22]Flutter:使用GetX編寫wanandroid專案

http://www.wanandroid.com/blog/show/3416

點選  關注我的公眾號

如果你想要跟大家分享你的文章,歡迎投稿~

┏(^0^)┛明天見!