本文以以下三個方向梳理安卓RILC的工作流程,不貼代碼,只通過流程圖的方式幫助同學(xué)們建立一個整體認(rèn)識。
整體框架

圖片發(fā)自簡書App
初始化

圖片發(fā)自簡書App
初始化完成主要完成兩個工作,第一是創(chuàng)建一個讀線程處理來自硬件的數(shù)據(jù),這個數(shù)據(jù)一類是硬件主動上報的數(shù)據(jù),這里理解為事件,另外一類是硬件對上層命令的響應(yīng)。
初始化完成的另外一個工作是創(chuàng)建RIL EVENT多路IO復(fù)用線程,用來讀取來自上層JAVA的命令。
數(shù)據(jù)發(fā)送

圖片發(fā)自簡書App
上層發(fā)送數(shù)據(jù)的時候,如需要底層響應(yīng),則會休眠等待底層設(shè)備響應(yīng)。流程圖中紅色步驟所示
從底層獲取event數(shù)據(jù)

圖片發(fā)自簡書App
命令響應(yīng)返回

圖片發(fā)自簡書App
讀線程在獲取到硬件數(shù)據(jù)之后,分析數(shù)據(jù)幀,發(fā)現(xiàn)是命令響應(yīng)幀,則會喚醒在RIL EVENT中發(fā)送命令等待的線程(虛線所示)