1.1Android資源打包、加載及緩存

<p>本篇文章谋梭,我們將介紹apk生成的大致流程信峻,并通過大量的案例來展示各種資源的加載過程。</p>


<p>首先說一下資源是怎么生成的瓮床。資源生成的工具叫做 AAPT 盹舞, AAPT 是一個可執(zhí)行的工具产镐,主要負(fù)責(zé)資源的編譯和打包。</p>

資源的打包


  • XML 文件通過 AAPT 編譯會生成一個編譯過的 XML 文件
  • Values 編譯過后沒有一個對等的文件踢步,編譯過后的 dimens 癣亚、 colors 文件數(shù)值會存儲在 Android 的一個資源包里 resource.arsc , resource.arsc 是一個資源的索引获印。
  • Image 通過 AAPT 會 Crunch 述雾, Crunch 會將 png 進行壓縮形成 Android 系統(tǒng)的 Image 文件;值得一提的是兼丰,我們在制作** 點9圖 **時會有一些伸縮的信息玻孟,而 Crunch 不會將這些信息存儲起來,而是將數(shù)據(jù)保存在 resource.arsc 文件里面鳍征。
  • Raw文件就相對簡單黍翎,直接Copy進APK包里的Raw文件中

Resource ID(資源ID)

我們在編寫代碼的時候會對 XML、Values 等資源進行引用艳丛,這時候我們會通過 R.Java 文件去引用匣掸。實際上 AAPT 在將資源文件編譯成 R 文件之前 會先將資源文件轉(zhuǎn)化成一個 R.text 然后再將 R.text 轉(zhuǎn)化成 R.java,而在 R.java 文件里面质礼,引用的資源是用 Resource ID 來標(biāo)識的旺聚。所以在這里我們有必要介紹一下 Resource ID。
<p> Resource ID 是由一個4個字節(jié)的 int 組成的眶蕉,而 Resource ID 又可以拆分成三個部分:</p>

Resource ID的邏輯結(jié)構(gòu)
  • 第一個字節(jié)表示這個資源是屬于哪一個包的
  • 第二個字節(jié)表示這個資源是什么類型的
  • 第三砰粹、四個字節(jié)就是表示這個資源所唯一的標(biāo)識符

getString( )



getString()引用String資源的流程:

1. getString();409Context(android.context),Context.java
2. getString();400,Resources(android.context.res),Resources.java
3. getText();308,Resources(android.context.res),Resources.java
5. getResourcesText();105,AssetManager(android.context.res),AssetManager.java
getString( ) 邏輯結(jié)構(gòu)圖

getLayout( )

<p>
getLayout()引用Layout資源的流程:</p>

1. getLayout();1165,Resources(android.content.res),Resources.java
2. loadXmlResourceParser();2776,Resources(android.content.res),Resources.java
3. loadXmlResourceParser();2803,Resources(android.content.res),Resources.java
4. openXmlBlockAsset();485,AssetManasger(android.content.res),AssetManager.java
Xml Block邏輯圖
getLayout( )邏輯結(jié)構(gòu)

getDimention( )

<p>
getDimention( )流程圖:
</p>

1. getDimention();620,Resources(android.content.res),Resources.java
2. getValue();1347,Resources(android.content.res),Resources.java
3. getResourcesValue();196,AssetManager(android.content.res),AssetManager.java
getDimention( ) 邏輯結(jié)構(gòu)

getDrawable( )

getDrawable( )結(jié)構(gòu)流程圖

完結(jié)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市造挽,隨后出現(xiàn)的幾起案子碱璃,更是在濱河造成了極大的恐慌,老刑警劉巖饭入,帶你破解...
    沈念sama閱讀 217,542評論 6 504
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件嵌器,死亡現(xiàn)場離奇詭異,居然都是意外死亡谐丢,警方通過查閱死者的電腦和手機爽航,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,822評論 3 394
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來乾忱,“玉大人讥珍,你說我怎么就攤上這事≌粒” “怎么了衷佃?”我有些...
    開封第一講書人閱讀 163,912評論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長蹄葱。 經(jīng)常有香客問我氏义,道長锄列,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,449評論 1 293
  • 正文 為了忘掉前任惯悠,我火速辦了婚禮邻邮,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘吮螺。我一直安慰自己饶囚,他們只是感情好帕翻,可當(dāng)我...
    茶點故事閱讀 67,500評論 6 392
  • 文/花漫 我一把揭開白布鸠补。 她就那樣靜靜地躺著,像睡著了一般嘀掸。 火紅的嫁衣襯著肌膚如雪紫岩。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,370評論 1 302
  • 那天睬塌,我揣著相機與錄音泉蝌,去河邊找鬼。 笑死揩晴,一個胖子當(dāng)著我的面吹牛勋陪,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播硫兰,決...
    沈念sama閱讀 40,193評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼诅愚,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了劫映?” 一聲冷哼從身側(cè)響起违孝,我...
    開封第一講書人閱讀 39,074評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎泳赋,沒想到半個月后雌桑,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,505評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡祖今,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,722評論 3 335
  • 正文 我和宋清朗相戀三年校坑,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片千诬。...
    茶點故事閱讀 39,841評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡耍目,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出大渤,到底是詐尸還是另有隱情制妄,我是刑警寧澤,帶...
    沈念sama閱讀 35,569評論 5 345
  • 正文 年R本政府宣布泵三,位于F島的核電站耕捞,受9級特大地震影響衔掸,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜俺抽,卻給世界環(huán)境...
    茶點故事閱讀 41,168評論 3 328
  • 文/蒙蒙 一敞映、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧磷斧,春花似錦振愿、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,783評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至侣颂,卻和暖如春档桃,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背憔晒。 一陣腳步聲響...
    開封第一講書人閱讀 32,918評論 1 269
  • 我被黑心中介騙來泰國打工藻肄, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人拒担。 一個月前我還...
    沈念sama閱讀 47,962評論 2 370
  • 正文 我出身青樓嘹屯,卻偏偏與公主長得像,于是被迫代替她去往敵國和親从撼。 傳聞我的和親對象是個殘疾皇子州弟,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,781評論 2 354

推薦閱讀更多精彩內(nèi)容