(一)Alarm的設(shè)置 這里簡單畫了一下,從framework到native再到kernel的大概流程。 1. 應(yīng)用層 我們先看一下應(yīng)用層設(shè)置alarm的方法。1. OnAl...
(一)Alarm的設(shè)置 這里簡單畫了一下,從framework到native再到kernel的大概流程。 1. 應(yīng)用層 我們先看一下應(yīng)用層設(shè)置alarm的方法。1. OnAl...
常見的幾種內(nèi)存泄漏場景 1.靜態(tài)實例我們使用靜態(tài)實例的時候需要警惕它的生命周期,因為它跟應(yīng)用程序的生命周期一樣長,比如在Activity中使用靜態(tài)實例,就算Activity已...
上一次介紹了HashMap的原理,HashMap采用一維數(shù)組+單鏈表+二叉樹的數(shù)據(jù)結(jié)構(gòu)。今天看下android對map類型的優(yōu)化,SparseArray的原理。在沒有hash...
Activity的View加載 創(chuàng)建一個Hello World,Android Studio會幫我們自動生成MainActivity。 進入OnCreate代碼,看到調(diào)用su...
傳統(tǒng)Linux的IPC通信 傳統(tǒng)的IPC通信,由于不同進程間的隔離,用戶空間的數(shù)據(jù)是不能共享的,需要通過內(nèi)核空間實現(xiàn)數(shù)據(jù)交換。比如進程A和進程B想要通信,首先進程A將數(shù)據(jù)通過...
Socket是什么 socket起源于Unix,可以理解成一個文件,可以執(zhí)行“讀,寫,打開,關(guān)閉”等操作,實際上是對TCP/IP協(xié)議的封裝,太復(fù)雜,這篇簡單看下Java層的實...
Java線程池基本用法 Java提供了一些通用接口來創(chuàng)建線程池: 但是通常不推薦使用這些簡易接口,因為這些接口可能會使用無界的任務(wù)隊列,理論上可以無限添加任務(wù)到線程池,并且對...
線程生命周期 NEW:創(chuàng)建了一個線程對象,但是還沒有調(diào)用start()方法。此時稱為初始狀態(tài)NEWRUNNABLE:調(diào)用了start()方法后,進入就緒狀態(tài),此時已經(jīng)進入ru...