Android 2.3 SD卡掛載流程淺析(二)

來源:互聯網
上載者:User

       在上一篇博文《Android 2.3 SD卡掛載流程淺析(一)》主要簡單的介紹了SD卡的掛載流程。包括了從核心層到使用者層事件訊息的傳遞,以及Vold的簡介。本文將繼續介紹SD卡的掛載,但文中並不會涉及代碼的詳細分析,因為這部分網上已有資料,我會在文章結尾貼出來供大家參考。本文主要目的是一方面對自己學習這一部分的總結,另一方面希望大家能夠指出文中理解錯誤的地方。

      1.SD卡掛載流程圖

      SD卡的掛載流程圖如下:


        綠色箭頭:表示插入SD卡後事件傳遞以及SD卡掛載

        紅色箭頭:表示掛載成功後的訊息傳遞流程

        黃色箭頭:表示MountService發出掛載/卸載SD卡的命令

        大家可能對圖中突然出現的這麼多的名稱感到奇怪,這些都是在Android 2.3 源碼中可以找到的,接下來我會為大家一一解釋這些類的作用。


       2.各個檔案的主要作用

    (1)Kernel:這個是系統核心啦。不是我要分析的檔案,本文涉及內容不是核心級的哦!(努力學習中...)


       (2)NetlinkManager:全稱是NetlinkManager.cpp位於Android 2.3源碼位置/system/vold/NetlinkManager.cpp。該類的主要通過引用NetlinkHandler類中的onEvent()方法來接收來自核心的事件訊息,NetlinkHandler位於/system/vold/NetlinkHandler.cpp。


    (3)VolumeManager:全稱是VolumeManager.cpp位於Android 2.3源碼位置/system/vold/VolumeManager.cpp。該類的主要作用是接收經過NetlinkManager處理過後的事件訊息。因為我們這裡是SD卡的掛載,因此經過NetlinkManager處理過後的訊息會分為五種,分別是:block,switch,usb_composite,battery,power_supply。這裡SD卡掛載的事件是block。


       (4)DirectVolume:位於/system/vold/DirectVolume.cpp。該類的是一個工具類,主要負責對傳入的事件進行進一步的處理,block事件又可以分為:Add,Removed,Change,Noaction這四種。後文通過介紹Add事件展開。


       (5)Volume:Volume.cpp位於/system/vold/Volume.cpp,該類是負責SD卡掛載的主要類。Volume.cpp主要負責檢查SD卡格式,以及對複合要求的SD卡進行掛載,並通過Socket將訊息SD卡掛載的訊息傳遞給NativeDaemonConnector。


       (6)NativeDaemonConnector:該類位於frameworks/base/services/java/com.android.server/NativeDaemonConnector.java。該類用於接收來自Volume.cpp 發來的SD卡掛載訊息並向上傳遞。


       (7)MountService:位於frameworks/base/services/java/com.android.server/MountService.java。MountService是一個服務類,該服務是系統服務,提供對外部存放裝置的管理、查詢等。在外部存放裝置狀態發生變化的時候,該類會發出相應的通知給上層應用。在Android系統中這是一個非常重要的類。


       (8)StorageManaer:位於frameworks/base/core/java/andriod/os/storage/StorageManager.java。在該類的說明中有提到,該類是系統儲存服務的介面。在系統設定中,有Storage相關項目,同時Setting也註冊了該類的監聽器。而StorageManager又將自己的監聽器註冊到了MountService中,因此該類主要用於上層應用擷取SD卡狀態。

    通過上文對各個檔案的作用簡介,以及整個SD卡的掛載流程圖可以知道,Android 系統是如何從底層擷取SD卡掛載資訊的。

       後文將繼續剖析器調用流程圖。

      

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.