Android是集成了linux內(nèi)核以及frameworks層的東西而形成為os,其中主要包含了三種語言的編程,主要是c、c++以及java。因此他們之間的通信問題就顯得尤為突出。 JAVA與c的通訊主要是通過JNI機(jī)制進(jìn)行的。為了提高效率,在上層都使用java進(jìn)行編程。因此在閱讀源代碼的過程中,就需要區(qū)分給用戶使用的文件,系統(tǒng)內(nèi)部使用的文件,以及與驅(qū)動(dòng)打交道的文件。 Android獲取系統(tǒng)消息概述 1、獲取原始的用戶消息,包括按鍵、觸摸屏、鼠標(biāo)、軌跡球等各種輸入設(shè)備的消息。 2、對原始消息進(jìn)行一定的加工,使之轉(zhuǎn)化為程序可以理解的消息。比如所有的按鍵消息都包括“按下、彈起”等原始消息,而對程序來講可能只關(guān)心該按鍵被“按了一次”或者“長按”,因此需要把原始消息轉(zhuǎn)換為程序可以理解的消息。 3、把轉(zhuǎn)換后的消息發(fā)送到相應(yīng)的用戶窗口所在的進(jìn)程。如果獲取線程和用戶線程同在一個(gè)進(jìn)程空間中,則傳遞消息比較簡單,但對于多進(jìn)程系統(tǒng)來講,消息獲取線程和用戶線程往往在不同的進(jìn)程空間中,因此需要使用IPC機(jī)制把消息傳遞到用戶窗口所在的線程中。 在接下來的幾篇博文中將陸續(xù)寫如下內(nèi)容: WindowManagerService處理消息的時(shí)機(jī) 上報(bào)和分發(fā)的消息的處理流程 AIDL簡介 |
|