原创 爲什麼PathClassLoader的父加載器(parent)是BootClassLoader?

目錄寫在前面查看PathClassLoader的源碼ActivityThread類的main方法總結 寫在前面 雙親委託機制中,當加載一個Class的時候,如果當前ClassLoader有父加載器的時候用父加載器加載。爲什麼Pat

原创 Android中ClassLoader雙親委託機制

目錄前言DexART與Dalvikdexopt與dexaotAndroid N(7.0)混合編譯ClassLoader介紹雙親委託機制雙親委託機制原理使用雙親委託機制目的1.安全。防止核心API庫被篡改。2.避免重複加載。當一個類

原创 搞清Class.forName()和ClassLoader.loadClass()的區別

反射定義 在運行狀態中,對任意一個類,都能知道這個類中所有的屬性和方法;對於任意一個對象,都能調用它的任意一個方法和屬性。 反射的使用過程中要基於Class對象,那通過Class.forName()或者ClassLoader.lo

原创 反射有性能損失,損失在哪裏?Class.getDeclaredMethod與Class.getMethod方法的區別是什麼?

反射有性能損失,損失在哪裏? 反射的執行過程: ClassLoader加載一個類會把類信息加載到JVM中,反射方法時,會動態解析Class需要獲取方法中的數據組成Method對象,反射執行的時候會通過Method對象執行需要執行的

原创 文本流程圖小工具分享

今天朋友給分享了一個文本流程圖小工具asciiflow 馬上上手用起來,感覺還不錯,以後一些複雜的流程可以通過小工具畫一下,然後貼在代碼裏了。 畫完後點擊“Export”圖標進行導出, 在這裏可以直接複製到代碼註釋中

原创 “碼上理解”---RxJava 線程調度分析(一)切換子線程

目錄RxJava簡單介紹文章目的環境搭建和代碼示例分析subscribeOn(Schedulers.io())Schedulers.io()subscribeOn()總結 RxJava簡單介紹 RxJava現在幾乎每個Androi

原创 “碼上理解”--- 手撕RxJava訂閱關係,事件發送和接收

目錄RxJava簡單介紹文章目的環境搭建和代碼示例subscribe()方法Observable.create(new ObservableOnSubscribe< String>() {})1.以observer爲參數創建了一個

原创 解決Android性能分析工具systrace使用時找不到section name(或者叫找不到tag)

一、我們先說可能的原因 如果找不到tag或者叫section name,有可能是 ①beginSection和endSection沒有成對出現 ②命令行設置了-t N | --time=N,但是這個時間段沒有執行tag所在的那段功

原创 一個你讀框架源碼之前必須要理解的技術點,泛型(一)

目錄泛型泛型的優點泛型擦除泛型類泛型接口泛型方法泛型通配符泛型上下邊界結束語 泛型 泛型(Generic)是Java編程語言的強大功能。 泛型的本質是參數化類型,在不創建新的類型的情況下,通過泛型指定某一個類、方法或接口成不同類型

原创 轉發:UML類圖詳解和示例(超詳細)

寫在前面 日常工作中用到UML類圖,從網上找到一篇博客關於其用法寫的不錯,在此轉發一下方便自己以後查看 原文鏈接:UML類圖詳解和示例 目錄寫在前面UML類圖概述什麼是UML類圖UML類圖的組成類和對象類之間的關係依賴關係泛化關係

原创 java單例模式的5種實現方式

簡介 單例模式是指在程序中只有一個實例存在。並且在程序運行中的任何時候都可以獲取該實例對象。 場景 1.Android中數據庫多線程讀寫時,保證每個線程使用同一個SQLiteDatabase對象,否則會報錯“database is

原创 幹掉findViewById,3種方法總有一款適合你

相信大家用AS寫頁面的時候,最煩的就是findViewById,尤其是複雜佈局,那感覺太酸爽😂,下面的3中方法我在項目中都在使用,目前感覺良好😄,廢話不多說,文章正式開始~ 文章目錄方案一:使用Android Studio 3.6