Android App資源的尋找過程分析

來源:互聯網
上載者:User

標籤:

    Android資源管理架構實際就是由AssetManager和Resources兩個類來實現的。其中,Resources類可以根據ID來尋找資源,而AssetManager類根據檔案名稱來尋找資源。事實上,如果一個資源ID對應的是一個檔案,那麼Resources類是先根據ID來找到資源檔名稱,然後再將該檔案名稱交給AssetManager類來開啟對應的檔案的,這個過程1所示。

    Resources類根據資源ID來查到資源名稱實際上也是要通過AssetManager類來實現的,這是因為資源ID與資源名稱的對應關係是由打包在APK裡面的resources.arsc檔案中的。當Resources類尋找的資源對應的是一個檔案的時候,它就會再次將資源名稱交給AssetManager,以便後者可以開啟對應的檔案,否則的話,上一步找到的資源名稱就是最終的尋找結果。

    

    APK包裡面的resources.arsc檔案是在編譯應用程式資源的時候產生的,然後連同其它被編譯的以及原生的資源一起打包在一個APK包裡面。

    資源尋找的過程來看,它們可以歸結為兩大類。第一類資源是不對應有檔案的,而第二類資源是對應有檔案的,例如,

            1. 字串資源是直接編譯在resources.arsc檔案中的,

            2. 而介面布局資源是在APK包裡面是對應的單獨的檔案的。

    如上所述,不對應檔案的資源只需要執行從資源ID到資源名稱的轉換即可,而對應有檔案的資源還需要根據資源名稱來開啟對應的檔案

 

    我們知道,每一個Activity組件建立的時候,它的成員函數onCreate都會被調用,而在Activity組件的成員函數onCreate中,我們基本上都無一例外地調用setContentView來設定Activity組件的介面。在調用Activity組件的成員函數setContentView的時候,需要指定一個layout類型的資源ID,以便Android資源管理架構可以找到指定的Xml資源檔來填充(inflate)為Activity組件的介面。接下來,我們就從Activity類的成員函數setContentView開始,分析Android資源管理架構尋找layout資源的過程,2所示。

     

 

Android App資源的尋找過程分析

聯繫我們

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