偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

對Android源碼分析總結(jié)

移動(dòng)開發(fā) Android
也許大家對與Android源碼還不是很了解,看完本文后對您一定會大有幫助,下文除了學(xué)習(xí)Android源碼基本性質(zhì)外還對Android源碼的編程技巧給予說明。

Android中進(jìn)行處理Android源碼中,hardware/ril目錄中包含著Android的telephony源碼,下面就由我向大家介紹這些目錄其中包含了三個(gè)子目錄,下面是對三個(gè)子目錄進(jìn)行具體的分析說明。

一、目錄hardware/ril/include分析:

只有一個(gè)頭文件ril.h包含在此目錄下。ril.h中定義了76個(gè)如下類型的宏:這些宏代表著客戶進(jìn)程可以向Android源碼telephony發(fā)送的命令,包括SIM卡相關(guān)的功能,打電話,發(fā)短信,網(wǎng)絡(luò)信號查詢等。好像沒有操作地址本的功能?

二、目錄hardware/ril/libril分析。本目錄下代碼負(fù)責(zé)與客戶進(jìn)程進(jìn)行交互。在接收客戶進(jìn)程命令后,調(diào)用相應(yīng)函數(shù)進(jìn)行處理,然后將命令響應(yīng)結(jié)果傳回客戶進(jìn)程。在收到來自網(wǎng)絡(luò)端的事件后,也傳給客戶進(jìn)程。

文件ril_commands.h:列出了telephony可以接收的命令;每個(gè)命令對應(yīng)的處理函數(shù);以及命令響應(yīng)的處理函數(shù)。 文件ril_unsol_commands.h:列出了telephony可以接收的事件類型;對每個(gè)事件的處理函數(shù);

以及WAKE Type??? 文件ril_event.h/cpp:處理與事件源(端口,modem等)相關(guān)的功能。ril_event_loop監(jiān)視所有注冊的事件源,當(dāng)某事件源有數(shù)據(jù)到來時(shí),相應(yīng)事件源的回調(diào)函數(shù)被觸發(fā)(firePending -> ev->func())

listenCallback函數(shù):當(dāng)與客戶進(jìn)程連接建立時(shí),此函數(shù)被調(diào)用。此函數(shù)接著調(diào)用processCommandsCallback處理來自客戶進(jìn)程的命令請求processCommandsCallback函數(shù):具體處理來自客戶進(jìn)程的命令請求。

對每一個(gè)命令,ril_commands.h中都規(guī)定了對應(yīng)的命令處理函數(shù)(dispatchXXX),processCommandsCallback會調(diào)用這個(gè)命令處理函數(shù)進(jìn)行處理。dispatch系列函數(shù):此函數(shù)接收來自客戶進(jìn)程的命令己相應(yīng)參數(shù),并調(diào)用onRequest進(jìn)行處理。

RIL_onUnsolicitedResponse函數(shù):將來自網(wǎng)絡(luò)端的事件封裝(通過調(diào)用responseXXX)后傳給客戶進(jìn)程,RIL_onRequestComplete函數(shù):將命令的最終響應(yīng)結(jié)構(gòu)封裝(通過調(diào)用responseXXX)后傳給客戶進(jìn)程。

response系列函數(shù):對每一個(gè)命令,都規(guī)定了一個(gè)對應(yīng)的response函數(shù)來處理命令的最終響應(yīng);對每一個(gè)網(wǎng)絡(luò)端的事件,也規(guī)定了一個(gè)對應(yīng)的 response函數(shù)來處理此事件。response函數(shù)可被onUnsolicitedResponse或者onRequestComplete調(diào)用。

三、目錄hardware/ril/reference-ril分析。本目錄下代碼主要負(fù)責(zé)與modem進(jìn)行交互。 文件reference-ril.c:此文件核心是兩個(gè)函數(shù):onRequest和onUnsolicited 。

onRequest 函數(shù):在這個(gè)函數(shù)里,對每一個(gè)RIL_REQUEST_XXX請求,都轉(zhuǎn)化成相應(yīng)的AT command,發(fā)送給modem,然后睡眠等待。當(dāng)收到此AT command的最終響應(yīng)后,線程被喚醒,將響應(yīng)傳給客戶進(jìn)程(RIL_onRequestComplete -> sendResponse)。

onUnsolicited函數(shù):這個(gè)函數(shù)處理modem從網(wǎng)絡(luò)端收到的各種事件,如網(wǎng)絡(luò)信號變化,撥入的電話,收到短信等。然后將時(shí)間傳給客戶進(jìn)程(RIL_onUnsolicitedResponse -> sendResponse)文件atchannel.c:負(fù)責(zé)向modem讀寫數(shù)據(jù)。其中,寫數(shù)據(jù)(主要是AT command)功能運(yùn)行在主線程中,讀數(shù)據(jù)功能運(yùn)行在一個(gè)單獨(dú)的讀線程中。

Android源碼at_send_command_full_nolock:運(yùn)行在主線程里面。將一個(gè)AT command命令寫入modem后進(jìn)入睡眠狀態(tài)(使用 pthread_cond_wait或類似函數(shù)),直到modem讀線程將其喚醒。喚醒后此函數(shù)獲得了AT command的最終響應(yīng)并返回。

函數(shù)readerLoop運(yùn)行在一個(gè)單獨(dú)的讀線程里面,負(fù)責(zé)從modem中讀取數(shù)據(jù)。讀到的數(shù)據(jù)可分為三種類型:網(wǎng)絡(luò)端傳入的事件;modem對當(dāng)前AT command的部分響應(yīng);modem對當(dāng)前AT command的全部響應(yīng)。對第三種類型的數(shù)據(jù)(AT command的全部響應(yīng)),讀線程喚醒(pthread_cond_signal)睡眠狀態(tài)的主線程。

【編輯推薦】

  1. Android應(yīng)用程序組建原理深入剖析 Android SMS短信服務(wù)相關(guān)概念簡述
  2.  
  3. PythonAndroid數(shù)據(jù)庫相關(guān)代碼解讀
  4. PythonAndroid安裝卸載程序具體操作方法解析
  5. Android應(yīng)用程序的四個(gè)關(guān)鍵點(diǎn)
責(zé)任編輯:chenqingxiang 來源: 計(jì)世網(wǎng)
相關(guān)推薦

2010-02-05 15:47:00

Android JDK

2021-08-10 07:00:00

Nacos Clien服務(wù)分析

2023-11-02 20:05:17

KubernetesPod管理

2009-07-01 10:55:23

2022-10-18 17:59:46

Bootstrap源碼父類

2014-07-18 09:51:05

挖掘數(shù)據(jù)分析

2024-01-29 08:28:01

Spring事務(wù)失效

2014-04-29 13:16:42

OpenGLAndroid庫加載過程

2013-04-03 15:45:51

Android瀑布流android_wat

2010-03-03 16:14:56

Android系統(tǒng)市場

2018-08-20 13:46:59

Android逆向分析終端安全

2018-07-19 15:57:46

ViewStub源碼方法

2011-09-15 09:52:45

Delphi XE2

2017-02-17 11:19:00

Android內(nèi)存泄露分析總結(jié)

2011-03-15 11:33:18

iptables

2014-08-26 11:11:57

AsyncHttpCl源碼分析

2011-10-31 13:42:46

Android客戶端人人網(wǎng)

2011-05-26 10:05:48

MongoDB

2011-11-14 10:27:22

FlashAndroidAdobe

2010-02-23 16:32:14

Python編程
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號