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