原创 【經驗總結】- 框架中哪些鮮爲人知的處理

簡介 在分析優秀的第三方框架或者Android系統源碼的時候,有時會發現一些鮮爲人知的一些特殊處理,而這些處理平時也很少被開發者注意到。雖然測試的時候很難出現問題,但是一旦使用場景複雜後,難免會出問題。優秀的代碼不僅是能夠實現漂亮的功能,同

原创 【經驗總結】- 框架中使用的其它優秀的庫

簡介 在分析優秀的第三方框架的時候,會發現框架本身也會引用其它的庫,可能這些庫並不大,文件也不多,但是裏面卻有着很多優秀的處理。而當我們自己要用的時候,需要做容錯處理的時候,總苦於沒有好的解決方案。下面將記錄我在分析第三方框架的時候發現的一

原创 JNI方法動態註冊

簡介 虛擬機在加載so庫的時候,會調用JNI_OnLoad方法,所以可以在這JNI_OnLoad完成JNI方法動態註冊。不清楚爲什麼系統會調用JNI_OnLoad方法的,請查看上一篇文章System.loadLibrary源碼分析 分類 加

原创 System.loadLibrary源碼分析

簡介 現在越來越多的項目都會使用第三方so庫,提交so庫,那麼自然想到的就是so庫的導入,很多在使用so庫的時候莫名會出現很多問題,不管是導庫的過程,還是使用so庫方法時。如果你對so使用一無所知,那麼接下來的幾篇文章將對你很有幫助,我會從

原创 【socket】- 客戶端源碼分析

簡介 網絡上的兩個程序通過一個雙向的通信連接實現數據的交換,這個連接的一端稱爲一個socket。 建立網絡通信連接至少要一對端口號(socket)。socket本質是編程接口(API),對TCP/IP的封裝,TCP/IP也要提供可供程序員做

原创 【設計模式】- 原型模式

簡介 原型模式屬於創建型模式,通過拷貝原型來創建新的對象。原型模式多用於創建複雜的或者構造耗時的實例,因爲複製一個已經存在的實例可以提高程序的運行效率。 場景 類初始化需要消耗很多的資源。 通過new創建一個對象,需要繁瑣的數據準備或訪問

原创 【設計模式】- Builder(構建者)模式

簡介 當我們在構建一個複雜的對象時,想要把對象的構建和表現分離開來,那麼就可以使用Builder模式。比如:構建一臺汽車,組成汽車的部件有很多,像輪胎,發動機,座位等。當具備所以的零部件後,我們組裝好汽車。那麼汽車能幹什麼,有怎樣的表現,顯

原创 Android的四種啓動模式及Task簡述

Android四種Activity啓動模式: 在AndroidManifest.xml 的Activity中配置屬性,屬性name爲android:launchMode.四種模式分別爲standard(默認)、singleTop、singl

原创 【設計模式】- 單例模式

簡介 單例模式可以說在平時開發過程中經常用到。當整個應用進程只需要創建一次某對象時。那麼單例模式就派上用場了。很多人覺得單例模式很簡單,但是裏面有些細節和不同寫法的差別,以及不同寫法都解決了什麼問題。還是可以瞭解瞭解。這樣在開發過程中可以根

原创 【Gson源碼分析】- 徹底搞懂Gson解析流程

簡介 Gson是google提供的一款Json解析框架,基本很多項目都會使用到。Gson自帶的容錯機制能夠使解析過程更加友好,但是並不能幫助我們解決所以的容錯問題,這時候可以通過向Gson註冊自己的解析適配器來接管Gson的解析過程。下面將

原创 Git學習之路途 - 檢查“打包分支”落後於“master”多少個commit

知識點 git rev-list ,git rev-parse,git symbolic-ref shell腳本 場景 當一個需求開發完成後,測試通過並上線,這時會把代碼合併到master分支上,等下一次需求來的時候,重新從master

原创 【React Native源碼分析】Fragment中使用RN

效果圖 這裏的“時空”頁面除了上面的tab欄,其餘完全是RN寫的,然後嵌入Fragment使用,剛開始接到這個需求的時候,心裏十萬個不情願,由於之前項目裏面都是在Activity裏面使用,而且React Native並沒有提供直接在Fra

原创 Git學習之旅 - Branching and Merging(分支和合並)篇

前言 其實git裏面的很多命令參數都是重複的,雖然功能不同,但大致意思可以舉一反三,所以文章只講解常用的的命令。 branch 羅列,創建或刪除分支 參考https://git-scm.com/docs/git-branch [--del

原创 Git學習之旅 - Basic Snapshotting(基本快照)篇

想要了解git add,commit原理的可以參考下面文章,非常有用,強烈推薦。 Git 原理入門 學習Git時候,多用 -h或者--help查看用法。 add git add [--verbose | -v] [--dry-run |

原创 Jenkins奇技淫巧 — Python打包篇(Android自動化構建)

Jenkins奇技淫巧 — 安裝篇(mac) Jenkins奇技淫巧 — 配置篇 Jenkins奇技淫巧 — 安全篇 Jenkins奇技淫巧 — 發送郵件篇 Jenkins奇技淫巧 — 全局變量篇 Jenkins奇技淫巧 — 新建任務