Android Vold架構

來源:互聯網
上載者:User

1. 總體架構

2. 流程概覽

2.1 開啟Vold

2.2 引導Uevent

2.3 處理事件

 

Vold - Volume Daemon儲存類的守護進程,作為Android的一個本地服務,負責處理諸如SD、USB等儲存類裝置的插拔等事件。

1. 總體架構

Vold服務由volumeManager統一管控,它將具體任務分別指派給netlinkManager, commandListener, directVolume, Volume去完成。

Vold服務向下通過socket機制與底層驅動互動,向上通過JNI, intent, socket, doCommand等機制與Java Framework互動。

 

 2 流程概覽

2.1 開啟服務

初始化Android系統時開啟Vold本地服務,

Vold在/dev/block下建立vold檔案夾,開啟VolumeManager, NetlinkManager, CommandListener。

2.2 引導Uevent

NetlinkManager負責監聽底層Linux上報的uevent事件。

 

系統的SocketListner統一管理所有socket事件。

NetlinkListner負責解析socket事件。

最後由onEvent()將vold事件交還給NetlinkManager處理。

2.3 處理Block和Switch事件

NetlinkManager調用VolumeManager中處理vold事件的類。

handleBlockEvent()完成SD的掛載和卸載,具體交由DirectVolume完成。

handleSwitchEvent()完成由USB實現的隨身碟的串連。

兩者最後都是通過setBroadcast()將ResponsibleCode經過nativeDaemonConnector的socket監聽機制,最終上傳到MountService作統一規劃。

MountService裡的onEvent()得到解析後的事件,完成兩大任務,

-> 發送命令doCommand()通過commandListener傳遞給volumeManager

-> 將事件資訊廣播給相關服務,供上層應用使用。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.