原创 ARouter init 源碼解析(自動註冊的實現)

概要 使用ARouter,我們只需要在必要的地方加上註解,然後在application中init Arouter就可以直接通過代碼進行路由跳轉了。 爲什麼我們可以不用寫任何註冊的代碼,就直接跳轉到相關路由呢?答案肯定是——ARou

原创 完全理解 java操作數棧和局部變量表

概要 近期學習到字節碼操控框架ASM,其中對方法的定義需要設置最大操作數棧和局部變量表。 於是,自己又複習了一遍java棧幀的概念。 如果對棧幀概念還不瞭解的讀者推薦看下此文章:詳細解析Java虛擬機的棧幀結構 例子綜述 本文

原创 一篇文章理解 同步異步、阻塞非阻塞

前述 同步異步,阻塞非阻塞是一些非常常見的概念,但是對於開發者來說往往是用到了很難說清楚。 筆者專門整理了下這方面的概念,作此文以記之。 這部分內容可能存在一些爭議,如有不同意見歡迎評論交流。 概念 個人理解同步異步與阻塞非阻

原创 【StudyDownload】斷點續傳Demo

StudyDownload StudyDownload項目地址:https://github.com/Double2hao/StudyDownload 此項目展示了斷點續傳功能的簡單實現,主要實現了以下功能: 支持下載中途暫

原创 Android ActivityManagerService (AMS)總結

轉載前言 AMS在Android中算是比較重要的一個知識點,不管是binder的源碼還是Serveice的源碼,都是涉及到AMS的,因此理解“AMS是什麼”對一個Android開發者來說還是很有必要的。 筆者之前也有分析過相關的

原创 OKHttp源碼解析 (複用連接池)

原文地址:https://www.jianshu.com/p/6166d28983a2 複用連接池 相關的主要三個類 RealConnection ConnectionPool StreamAllocation 對流的處

原创 Java與Android的類加載器

原文地址:https://www.jianshu.com/p/9839398c453c 雙親委派模型 在加載一個字節碼文件時,會詢問當前的classLoader是否已經加載過此字節碼文件。如果加載過,則直接返回,不再重複加載。

原创 Android 熱修復原理(java類加載機制)

原文地址:https://www.jianshu.com/p/cb1f0702d59f 熱修原理(java類加載機制) DexClassLoader在加載一個類時會先從自身DexPathList對象中的Element數組中獲取

原创 【StudyRouter】路由的自動註冊

StudyRouter 項目地址:https://github.com/Double2hao/StudyRouter 此項目通過使用動態編譯、註解解釋器等技術,用最簡單的方式實現了路由的自動註冊。 如對這方面知識有興趣的朋友可

原创 解決方案:android onstop 延遲迴調 10s的問題

概述 近期碰到activity onstop延遲迴調10s的問題。 關於問題的具體復現和原因,有博主總結的很不錯,此處給上原鏈接: 深入分析Android中Activity的onStop和onDestroy()回調延時及延時10s

原创 動態編譯入門(gradle Transform Demo)

概述 現在市面上的插件化框架,熱修復框架幾乎都使用了動態編譯技術。 動態編譯的實質是,使用gradle transform api,在項目構建過程的class文件轉成dex文件之前,通過自定義插件,進行class字節碼處理。 本

原创 fresco要點記錄

本文參考 https://github.com/facebook/fresco https://juejin.im/post/5a7568825188257a7a2d9ddb 概述 近期使用到fresco,各要點總結記錄下。本

原创 使用RecyclerView解決滑動衝突(RecyclerView添加header)

概述 在android平時開發中,經常會碰到同一個頁面中有多個list的問題,或者需要再一個list中存在靜態佈局需要與list一起滾動的的需求。 針對這些情況,筆者嘗試過多種方法,如:scrollView嵌套recyclerVi

原创 Andromeda 源碼解析 (同步獲取服務)

Andromeda Andromeda是愛奇藝開源的適用於多進程架構的組件通信框架。 github地址: https://github.com/iqiyi/Andromeda 其特點如下: 無需開發者進行bindServic

原创 android 騰訊X5 首次安裝App 無效問題 (webview報錯TypeError)

問題 騰訊X5 webview在兩種情況下使用,在首次啓動會有問題: 1、應用啓動後馬上調用webview 2、新啓一個進程使用webview,並且在新進程中初始化X5 此問題只會在首次安裝的時候出現,第二次啓動App的時候就不