Android查找資源的流程

Android系統中每一個應用程序一般都會配置很多資源,以適配不同密度、大小和方向的屏幕,以及不同的國家、地區和語言等。這些資源在應用程序運行時自動根據設備的當前配置信息進行適配。也就是說,給定一個的資源ID,在不同設備配置之下,查找到的則可能是不同的資源。

查找的過程對于應用程序來說是完全透明的,此過程主要是靠Android資源管理框架來完成的,而Android資源管理框架是由AssetManager和Resources兩個類來實現的。Resources類可以根據ID來查找資源,AssetManager類根據文件名來查找資源。如果一個資源ID對應的是一個文件,那么Resources類先根據ID來找到資源文件名稱,然后再將該文件名稱交給AssetManager類來打開對應的文件。

我們來看一下基本的流程:

可以看到Resources是通過resources.arsc把Resources的ID轉化成資源文件的名稱,然后交由AssetManager來加載。

resources.arsc這個文件存放在APK包中,他們是由AAPT工具在打包工程中生成的,它本身是一個資源索引表,里面維護著資源ID、Name、Path或者Value的對應關系,AssetManager通過這個索引表,通過資源ID就可以找到這個資源對應的文件或數據。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容