OOP如果是把問題劃分到單個模塊的話AOP就是把涉及到眾多模塊的某一類問題進行統一管理。 Android AOP就是通過預編譯方式和運行期動態代理實現程序功能的統一維護的一種...

OOP如果是把問題劃分到單個模塊的話AOP就是把涉及到眾多模塊的某一類問題進行統一管理。 Android AOP就是通過預編譯方式和運行期動態代理實現程序功能的統一維護的一種...
不設置任何事件、 c onTouchEvent返回true 手指劃出c 亦如此 僅僅b onInterceptTouchEvent 返回 true 并未傳遞給c b 在mov...
Android 里面為什么要設計出 Bundle 而不是直接用 Map 結構 Bundle內部是由ArrayMap實現的,ArrayMap的內部實現是兩個數組,一個int數組...
什么地方需要window? 一句話總結:有視圖的地方就需要windowActivity、Dialog、Toast... 一句話概括三者的基本關系 Activity中展示視圖元...
為什么Android要設計Binder呢?直接用Linux的IPC通信機制不行嗎? 一是因為Android系統相比于Linux,對安全性有更高的要求,Android中的每個應...
系統加載 so 庫的工作流程 當我們調用當調用 System#loadLibrary("xxx" ) 后,Android Framework 都干了些了啥? 在看下Syste...
直接去常量池里查找是否有‘abc’,如果沒有就創建一個,然后s1指向常量池對應字符 在堆里創建String對象,然后去常量池里檢查存放‘abc’ 在堆里創建‘ab’和‘c’對...
我們都知道,應用程序的內存分配和垃圾回收都是由Android虛擬機完成的,在Android 5.0以下,使用的是Dalvik虛擬機,5.0及以上,則使用的是ART虛擬機。 J...
1-ReentrantLock ReentrantLock是獨占鎖,而且內部可以是公平鎖,非公平鎖;公平鎖:公平鎖:加鎖錢需要檢查是否還有在排隊(等待)的線程,優先排隊的 非...
1 初次相識 在ReentrantLock鎖代碼中,你發現,鎖的動作是由Sync的實例來處理,而Sync是繼承了AbstractQueuedSynchronizer;而在Re...
1 線程切換例子 輸出結果為: Observer(觀察者)的onSubscribe()方法運行在當前線程中。 Observable(被觀察者)中的subscribe()運行在...
1 簡單使用步驟 1、創建被觀察者(Observable),定義要發送的事件。2、創建觀察者(Observer),接受事件并做出響應操作。3、觀察者通過訂閱(subscrib...
報錯 UI 的線程檢查機制就已經建立了,所以在子線程更新就會報錯。 子線程更新的錯誤定位 子線程更新的錯誤定位是 ViewRootImpl 中的 checkThread 方法...
對于 Android 設備來說,我們每打開一個 APP,它的內存都是彈性分配的,并且其分配值與最大值是受具體設備而定的。此外,我們需要注意區分如下兩種 OOM 場景: 1)、...
Java代碼編譯后生成的字節碼.class文件從文件系統中加載到虛擬機之后,便有了JVM上的Java對象,Java對象在JVM上運行有7個階段,如下: Created InU...
JVM中的實現原理 我們平常在使用Synchronize進行加鎖時,主要有兩個方式,一種是鎖住整個方法,將Synchronize字段加載方法名上,第二種是鎖住一段代碼,將Sy...