原创 Android進階知識樹——Android系統的啓動過程

1、init進程 作爲Android開發者和Android使用者,相信每個人都接觸過多種Android設備,不管是哪種品牌、哪種類型的Android設置,在使用之前都要完成開機操作,對於普通用戶來說開機只是一個操作過程,但對於開發

原创 Android進階知識樹——組件化

1、概述 筆者從事智能傢俱行業的開發工作,也是從公司創業團隊工作到現在,對於公司的項目從1.0版本開始接手一直到現在,雖說項目不是很大但麻雀雖小五臟俱全,在項目和團隊的不斷擴大、暴露出的問題也不段增多,組件化勢在必行,本文就根據整

原创 Androdi熱修復之路(三) ——Tinker 源碼分析

1、Tinker初始化 Application @Override public void onBaseContextAttached(Context base) { super.onBaseContextAttache

原创 Android插件化——Context機制

1、Context介紹 Context在Android中表示上下文對象,也是開發中經常使用的類,在Android的四大組件中隨處可見Context的身影,資源獲取也必須依賴Context,可以說Context的重要程度非一般類可比

原创 Android進階知識樹——JNI基礎知識和So庫創建

1、Jni基礎知識 Jni使用場景 需要調用Java語言不支持的依賴時, 整合非Java語言開發的系統,如C、C++ 節省運行時間提高運行效率,如:音視頻等 Jni類型和Java類型的映射關係 native方法與Jn

原创 Android進階知識樹——安全

1、Smile語法入門 Smali是Java虛擬機中的一種.dex格式文件彙編器,它採用一種寬鬆式的Jasmin/dedexer的語法,表達了.dex格式所有功能和信息 原始類型映射關係 v :void () Z:boole

原创 Android插件化——VirtualAPK接入與源碼分析

1、VirtualAPK的接入 1.1、宿主工程引入VirtualApk 在項目Project的build.gradle中添加依賴 dependencies { classpath 'com.didi.virtuala

原创 Android框架源碼分析——Okhttp源碼分析

1、OkhttpClient創建 創建OkhttpClient OkHttpClient okHttpClient = new OkHttpClient.Builder().build(); OkHttpClient.Bu

原创 Android框架源碼分析——OKhttp緩存篇

在網絡請求中緩存佔着非常重要的作用,不僅影響着用戶體驗也跟產品的使用流量有關,Okhttp框架提供了CacheInterceptor攔截器負責處理請求的緩存,CacheInterceptor會根據請求的內容和設置的緩存時間判斷內容

原创 原 Android進階知識樹——Retrofit源碼分析

1、使用Demo public static <T> T createApi(Class<T> clazz, String url) { Retrofit retrofit = new Retrofit.Builder()

原创 Android進階知識樹——RxJava&Schedule源碼分析

1、線程切換使用實例 Observable.create(object:ObservableOnSubscribe<String>{ override fun subscribe(e: ObservableEmitter<

原创 Android進階知識樹——RxJava源碼分析

1、基本訂閱流程 使用實例 Observable.create(ObservableOnSubscribe<String> { e -> e.onNext("A") }) .subscribe(object : Obs

原创 Android進階知識樹——Glide緩存使用&源碼分析

1、Glide的緩存 Glide 在加載圖片時會依次訪問以下緩存: 活動資源 (Active Resources) - 現在是否有另一個 View 正在展示這張圖片? 內存緩存 (Memory cache) - 該圖片是否最

原创 Android進階知識樹——Glide源碼分析

1、Glide的使用 Glide.with(this).load(url).into(imageView) 在當下Glide已經是很常見的圖片加載工具了,相信很多開發者都體會到其方便指出,Glide的使用就簡單一句話即可

原创 Androdi熱修復之路(二) —— Multidex 分包原理

1、使用 使用配置 在build.gradle中添加支持Multidex defaultConfig{ multiDexEnabled true } 添加Multidex依賴 implementation '