《第一行代碼》閱讀筆記 (1)

一寨典、Android系統(tǒng)架構(gòu)

1.Linux內(nèi)核層

Android系統(tǒng)是基于Linux 2.6內(nèi)核的,這一層為Android設(shè)備的各種硬件提供了底層的驅(qū)動(dòng)房匆, 如顯示驅(qū)動(dòng)耸成、 音頻驅(qū)動(dòng)报亩、 照相機(jī)驅(qū)動(dòng)、 藍(lán)牙驅(qū)動(dòng)井氢、Wi-Fi驅(qū)動(dòng)弦追、 電源管理等。

2.系統(tǒng)運(yùn)行庫(kù)層

這一層通過(guò)一些C/C++庫(kù)來(lái)為Android系統(tǒng)提供了主要的特性支持花竞。 如SQLite庫(kù)提供了數(shù)據(jù)庫(kù)的支持劲件,OpenGL/ES庫(kù)提供了3D繪圖的支持,Webkit庫(kù)提供了瀏覽器內(nèi)核的支持等约急。同樣在這一層還有Android運(yùn)行時(shí)庫(kù)零远, 它主要提供了一些核心庫(kù), 能夠允許開(kāi)發(fā)者使用Java語(yǔ)言來(lái)編寫(xiě)Android應(yīng)用厌蔽。另外Android運(yùn)行時(shí)庫(kù)中還包含了Dalvik虛擬機(jī)牵辣,它使得每一個(gè)Android應(yīng)用都能運(yùn)行在獨(dú)立的進(jìn)程當(dāng)中, 并且擁有一個(gè)自己的Dalvik虛擬機(jī)實(shí)例奴饮。相較于Java虛擬機(jī)纬向,Dalvik是專門(mén)為移動(dòng)設(shè)備定制的,它針對(duì)手機(jī)內(nèi)存戴卜、CPU性能有限等情況做了優(yōu)化處理逾条。

3.應(yīng)用框架層

這一層主要提供了構(gòu)建應(yīng)用程序時(shí)可能用到的各種API,Android自帶的一些核心應(yīng)用就是使用這些API完成的投剥, 開(kāi)發(fā)者也可以通過(guò)使用這些API來(lái)構(gòu)建自己的應(yīng)用程序膳帕。

4.應(yīng)用層

所有安裝在手機(jī)上的應(yīng)用程序都是屬于這一層的, 比如系統(tǒng)自帶的聯(lián)系人薇缅、 短信等程序危彩,或者是你從Google Play上下載的小游戲,當(dāng)然還包括你自己開(kāi)發(fā)的程序泳桦。

Android架構(gòu)圖

二汤徽、Android四大組件

Android系統(tǒng)四大組件分別是活動(dòng)(Activity)、服務(wù)(Service)灸撰、廣播接收器(BroadcastReceiver) 和內(nèi)容提供器(Content Provider)谒府。 其中活動(dòng)是所有Android應(yīng)用程序的門(mén)面,凡是在應(yīng)用中你看得到的東西浮毯, 都是放在活動(dòng)中的完疫。 而服務(wù)就比較低調(diào)了, 你無(wú)法看到它债蓝, 但它會(huì)一直在后臺(tái)默默地運(yùn)行壳鹤, 即使用戶退出了應(yīng)用, 服務(wù)仍然是可以繼續(xù)運(yùn)行的饰迹。廣播接收器可以允許你的應(yīng)用接收來(lái)自各處的廣播消息芳誓, 比如電話余舶、 短信等, 當(dāng)然你的應(yīng)用同樣也可以向外發(fā)出廣播消息锹淌。內(nèi)容提供器則為應(yīng)用程序之間共享數(shù)據(jù)提供了可能匿值,比如你想要讀取系統(tǒng)電話簿中的聯(lián)系人,就需要通過(guò)內(nèi)容提供器來(lái)實(shí)現(xiàn)赂摆。

三挟憔、活動(dòng)(Activity)

Intent:Intent是Android程序中各組件之間進(jìn)行交互的一種重要方式,它不僅可以指明當(dāng)前組件想要執(zhí)行的動(dòng)作烟号,還可以在不同組件之間傳遞數(shù)據(jù)绊谭。Intent一般可被用于啟動(dòng)活動(dòng)、啟動(dòng)服務(wù)褥符、 以及發(fā)送廣播等場(chǎng)景龙誊。

Intent分為顯示Intent與隱式Intent。

四喷楣、活動(dòng)的生命周期

返回棧


五趟大、活動(dòng)狀態(tài)

運(yùn)行狀態(tài)當(dāng)一個(gè)活動(dòng)位于返回棧的棧頂時(shí), 這時(shí)活動(dòng)就處于運(yùn)行狀態(tài)铣焊。 系統(tǒng)最不愿意回收的就是處于運(yùn)行狀態(tài)的活動(dòng)逊朽,因?yàn)檫@會(huì)帶來(lái)非常差的用戶體驗(yàn)。

暫停狀態(tài):當(dāng)一個(gè)活動(dòng)不再處于棧頂位置曲伊, 但仍然可見(jiàn)時(shí)叽讳, 這時(shí)活動(dòng)就進(jìn)入了暫停狀態(tài)。處于暫停狀態(tài)的活動(dòng)仍然是完全存活著的坟募, 系統(tǒng)也不愿意去回收這種活動(dòng)(因?yàn)樗€是可見(jiàn)的岛蚤,回收可見(jiàn)的東西都會(huì)在用戶體驗(yàn)方面有不好的影響),只有在內(nèi)存極低的情況下懈糯,系統(tǒng)才會(huì)去考慮回收這種活動(dòng)涤妒。

停止?fàn)顟B(tài):當(dāng)一個(gè)活動(dòng)不再處于棧頂位置, 并且完全不可見(jiàn)的時(shí)候赚哗, 就進(jìn)入了停止?fàn)顟B(tài)她紫。 系統(tǒng)仍然會(huì)為這種活動(dòng)保存相應(yīng)的狀態(tài)和成員變量, 但是這并不是完全可靠的屿储, 當(dāng)其他地方需要內(nèi)存時(shí)贿讹,處于停止?fàn)顟B(tài)的活動(dòng)有可能會(huì)被系統(tǒng)回收。

銷毀狀態(tài):當(dāng)一個(gè)活動(dòng)從返回棧中移除后就變成了銷毀狀態(tài)够掠。 系統(tǒng)會(huì)最傾向于回收處于這種狀態(tài)的活動(dòng)民褂,從而保證手機(jī)的內(nèi)存充足。

六、活動(dòng)生存周期

七助赞、活動(dòng)啟動(dòng)模式

啟動(dòng)模式一共有四種买羞,分別是standard袁勺、singleTop雹食、singleTasksingleInstance, 可以在AndroidManifest.xml通過(guò)給標(biāo)簽指定android:launchMode屬性來(lái)選擇啟動(dòng)模式期丰。

standard是活動(dòng)默認(rèn)的啟動(dòng)模式群叶,在不進(jìn)行顯式指定的情況下,所有活動(dòng)都會(huì)自動(dòng)使用這種啟動(dòng)模式钝荡。 因此街立, 到目前為止我們寫(xiě)過(guò)的所有活動(dòng)都是使用的standard模式。 在standard模式(即默認(rèn)情況)下埠通,每當(dāng)啟動(dòng)一個(gè)新的活動(dòng)赎离,它就會(huì)在返回棧中入棧,并處于棧頂?shù)奈恢枚巳琛?duì)于使用standard模式的活動(dòng)梁剔,系統(tǒng)不會(huì)在乎這個(gè)活動(dòng)是否已經(jīng)在返回棧中存在,每次啟動(dòng)都會(huì)創(chuàng)建該活動(dòng)的一個(gè)新的實(shí)例舞蔽。

當(dāng)活動(dòng)的啟動(dòng)模式指定為singleTop荣病, 在啟動(dòng)活動(dòng)時(shí)如果發(fā)現(xiàn)返回棧的棧頂已經(jīng)是該活動(dòng), 則認(rèn)為可以直接使用它渗柿,不會(huì)再創(chuàng)建新的活動(dòng)實(shí)例个盆。

當(dāng)活動(dòng)的啟動(dòng)模式指定為singleTask, 每次啟動(dòng)該活動(dòng)時(shí)系統(tǒng)首先會(huì)在返回棧中檢查是否存在該活動(dòng)的實(shí)例朵栖, 如果發(fā)現(xiàn)已經(jīng)存在則直接使用該實(shí)例颊亮, 并把在這個(gè)活動(dòng)之上的所有活動(dòng)統(tǒng)統(tǒng)出棧,如果沒(méi)有發(fā)現(xiàn)就會(huì)創(chuàng)建一個(gè)新的活動(dòng)實(shí)例陨溅。

singleInstance在這種模式下會(huì)有一個(gè)單獨(dú)的返回棧來(lái)管理這個(gè)活動(dòng)终惑, 不管是哪個(gè)應(yīng)用程序來(lái)訪問(wèn)這個(gè)活動(dòng), 都共用的同一個(gè)返回棧声登, 也就解決了共享活動(dòng)實(shí)例的問(wèn)題狠鸳。

singleInstance原理
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市悯嗓,隨后出現(xiàn)的幾起案子件舵,更是在濱河造成了極大的恐慌,老刑警劉巖脯厨,帶你破解...
    沈念sama閱讀 206,968評(píng)論 6 482
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件铅祸,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)临梗,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,601評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門(mén)涡扼,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人盟庞,你說(shuō)我怎么就攤上這事吃沪。” “怎么了什猖?”我有些...
    開(kāi)封第一講書(shū)人閱讀 153,220評(píng)論 0 344
  • 文/不壞的土叔 我叫張陵票彪,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我不狮,道長(zhǎng)降铸,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 55,416評(píng)論 1 279
  • 正文 為了忘掉前任摇零,我火速辦了婚禮推掸,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘驻仅。我一直安慰自己谅畅,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,425評(píng)論 5 374
  • 文/花漫 我一把揭開(kāi)白布雾家。 她就那樣靜靜地躺著铃彰,像睡著了一般。 火紅的嫁衣襯著肌膚如雪芯咧。 梳的紋絲不亂的頭發(fā)上牙捉,一...
    開(kāi)封第一講書(shū)人閱讀 49,144評(píng)論 1 285
  • 那天,我揣著相機(jī)與錄音敬飒,去河邊找鬼邪铲。 笑死,一個(gè)胖子當(dāng)著我的面吹牛无拗,可吹牛的內(nèi)容都是我干的带到。 我是一名探鬼主播,決...
    沈念sama閱讀 38,432評(píng)論 3 401
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼英染,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼揽惹!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起四康,我...
    開(kāi)封第一講書(shū)人閱讀 37,088評(píng)論 0 261
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤搪搏,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后闪金,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體疯溺,經(jīng)...
    沈念sama閱讀 43,586評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡论颅,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,028評(píng)論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了囱嫩。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片恃疯。...
    茶點(diǎn)故事閱讀 38,137評(píng)論 1 334
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖墨闲,靈堂內(nèi)的尸體忽然破棺而出今妄,到底是詐尸還是另有隱情,我是刑警寧澤损俭,帶...
    沈念sama閱讀 33,783評(píng)論 4 324
  • 正文 年R本政府宣布蛙奖,位于F島的核電站潘酗,受9級(jí)特大地震影響杆兵,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜仔夺,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,343評(píng)論 3 307
  • 文/蒙蒙 一琐脏、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧缸兔,春花似錦日裙、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,333評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至抛猖,卻和暖如春格侯,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背财著。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,559評(píng)論 1 262
  • 我被黑心中介騙來(lái)泰國(guó)打工联四, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人撑教。 一個(gè)月前我還...
    沈念sama閱讀 45,595評(píng)論 2 355
  • 正文 我出身青樓朝墩,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親伟姐。 傳聞我的和親對(duì)象是個(gè)殘疾皇子收苏,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,901評(píng)論 2 345

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