原创 從startActivity談起

Activity.java@Overridepublic void startActivity(Intent intent) {    this.startActivity(intent, null);}調用了帶Bundler參數的重載方

原创 熱修復之AndFix探祕

熱修復之AndFix探祕近幾年熱修復技術可謂百花齊放,阿里的底層結構替換即時生效技術AndFix,後來又出來看起來很叼的Sophix,同時支持即時生效和冷啓動修復。微信的Tinker和餓了麼的Amigo。看了好幾遍AndFix原理後,特寫

原创 ARouter源碼解讀

ARouter源碼解讀以前看優秀的開源項目,看到了頁面路由框架ARouter,心想頁面路由是個啥東東,於是乎網上搜索查看,是阿里出品開源的,主要是關於頁面跳轉的解耦框架。一直想看看具體是怎麼實現的,今有時間便來一探究竟。傳統的頁面跳轉就是

原创 設計模式之代理模式

設計模式之代理模式 代理(Proxy)是一種設計模式,提供了對目標對象另外的訪問方式;即通過代理對象訪問目標對象.這樣做的好處是:可以在目標對象實現的基礎上,增強額外的功能操作,即擴展目標對象的功能.舉個栗子,比如你要調用別人的代碼,想計

原创 startService源碼解讀

之前分析過startActivity方法的源碼,知道了startActivity的調用流程,大致的流程就是app通過Binder調用AMS的方法,然後AMS也通過Binder調用app的方法,app再回調我們的Activity的生命週期方

原创 JNI-C指針語法

JNI-C指針語法最近看阿里的熱修復代碼時,發現裏面基本都是在c層處理,想着以前也考過c2證書,c語言基礎還是比較瞭解,沒想到看到一大堆的*&符號的時候,只記得*符號是用於指針,至於指針怎麼用的,現已差不多記不得了。想到如果想精通JNI,

原创 深入Java虛擬機-讀書筆記二 垃圾收集器

深入Java虛擬機-讀書筆記二 垃圾收集器 當我們討論垃圾收集的時候,也就是討論三個問題 1. 哪些內存需要回收?堆?方法區?方法區裏面的常量池?還是其他? 2. 什麼時候回收?內存不夠的時候回收還是定時回收? 3. 如何回收?回收的

原创 Gradle基礎

配置Gradle環境 前提:配置好Java環境 把gradle 對象的bin目錄配置到系統環境變量裏面 出現如下圖,則表示環境已經配置好了 Gradle版 hello world 創建一個build.gradle文件 添加gradle

原创 invalidate方法源碼追蹤

  首先調用public void invalidate() {        invalidate(true); }調用invalidete 帶參數的方法 void invalidate(boolean invalidateCache)

原创 Android熱修復之dex修復原理

Android熱修復之dex修復原理首先有一個出Bug的類  然後在點擊按鈕事件裏面添加調用bug類的方法  模擬bug出現的場景。  再修復這個出bug類的方法 然後生成dex文件 dx命令 dx --dex --output=a.de

原创 setContentView源碼解讀

setContentView方法是我們Activity裏面必須要用的方法,那麼當我們調用這個方法的時候系統到底做了什麼呢?現在來一探究竟首先查看Activity.java public void setContentView(@Layou

原创 RxJava 源碼 解讀

RxJava 源碼解讀 一直以來在網上看到關於RxJava的使用博客都稱讚RxJava使用起來非常簡潔,即使業務邏輯非常複雜,它依然能夠保持簡潔。於是在個人項目也添加了RxJava和RxAndroid.秉着知其然知其所以然的態度

原创 內存泄露分析之as monitors、MAT、leakcanary 使用

內存泄露分析之as monitors、MAT、leakcanary 使用1 android studio monitors這是android studio自帶的工具在當前進程下,點擊如下圖標,觸發gc操作 Gc後再點擊旁邊的按鈕,收集ja

原创 插件化原理之hook系統函數

 插件化原理之hook系統函數插件化主要問題之一是如startActivity一個未在註冊表裏面註冊的acitivity。我們都知道開啓一個activity是涉及到app進程和系統服務進程的交互過程,其中驗證要打開的acitivity是否