(一)Android簡介(下)

第一部分目錄:

第一章 快速入門

  • 安裝工具
  • 再見Hello World
  • 模擬器(或真機)運行
  • 其他步驟
  • 常用快捷鍵

第二章 重要概念

  • 總覽
  • 構(gòu)件
  • 前臺只能有一個應(yīng)用
  • 安全保障

重要概念:

1.總覽
我們先來看看Android的系統(tǒng)架構(gòu)圖染厅。

Android系統(tǒng)架構(gòu)圖

說明:
(1)Linux內(nèi)核
Linux內(nèi)核為Android提供了硬件抽象層,讓Android能夠移植到各種平臺上脓杉。在內(nèi)部糟秘,Android使用Linux來提供內(nèi)存管理、進程管理球散、聯(lián)網(wǎng)和其他操作系統(tǒng)服務(wù)尿赚。Android用戶根本看不到Linux,而程序員往往也不會直接使用Linux調(diào)用蕉堰。但作為開發(fā)人員必須直到Linux的而存在凌净。

(2)原生層
在內(nèi)核層的上一層是Android原生層,這些共享庫都是使用C或C++編寫的屋讶,針對Android設(shè)備使用的硬件架構(gòu)進行編譯冰寻,并直接由廠商預(yù)裝。以下是最重要的原生庫:

  • Surface Manager皿渗。
  • 2D和3D圖形斩芭。
  • 多媒體編碼解碼器。
  • SQL數(shù)據(jù)庫乐疆。
  • 瀏覽器引擎划乖。

(3)Android運行時
在內(nèi)核之上還有Android運行時,包括運行環(huán)境和核心Java庫挤土。運行環(huán)境使用Dalvik或ART琴庵,具體使用取決于Android版本。

  • Dalvik是Google的Dan Bornstein 設(shè)計并編寫的一款虛擬機。編寫好的代碼會被編譯為獨立于機器的指令(字節(jié)碼)迷殿,然后由移動設(shè)備的Dalvik VM執(zhí)行儿礼。
  • ART,即Android Runtime庆寺,是一款超前的編譯器蚊夫。Android 5.0用它取代了Dalvik。相比與Dalvik止邮,ART可以提高程序的運行速度这橙,但代價是安裝時間更長一點。

(4)應(yīng)用框架
在原生層和運行時之上导披,是應(yīng)用框架屈扎。它提供了用于創(chuàng)建應(yīng)用的高級構(gòu)件。這個框架是隨著Android預(yù)安裝的撩匕,可以根據(jù)需要對其進行擴展鹰晨,在其中添加自己的組件。以下是應(yīng)用框架最重要的組成部分:

  • 活動管理器止毕。它控制著應(yīng)用的生命周期模蜡,并維護一個用于用戶導(dǎo)航功能的通用后退棧。
  • 內(nèi)容提供者扁凛。這些對象封裝了要在應(yīng)用之間共享的數(shù)據(jù)忍疾,如通訊錄等。
  • 資源管理器谨朝。資源指的是程序中除代碼以外的其他所有東西卤妒。
  • 位置管理器。Android設(shè)備始終知道其自身處何方字币。
  • 通知管理器则披。以不唐突的方式將短信、約會洗出、接近提示等事件告知用戶士复。

(5)應(yīng)用和服務(wù)
最頂層的就是應(yīng)用和服務(wù)層。應(yīng)用是可以占據(jù)整個屏幕與用戶進行交互的程序翩活,而服務(wù)則隱匿在用戶的視線之外阱洪,默默地擴展應(yīng)用框架。

2.構(gòu)件
Android應(yīng)用框架提供了大量可用于創(chuàng)建應(yīng)用的構(gòu)件菠镇,而這些構(gòu)件最重要的就是:活動澄峰、片段、視圖辟犀、意圖、服務(wù)和內(nèi)容提供者。以下簡要介紹堂竟,之后會在對應(yīng)章節(jié)中詳細學習:

  • 活動(Activity)魂毁,是一個用戶界面屏幕。應(yīng)用可以定義一個或多個活動出嘹,用于處理應(yīng)用程序的不同階段席楚。活動擴展了Context類税稼,因此可使用他們來獲取全局信息烦秩。
  • 片段(Fragment),是活動的一個組成部分郎仆,通常顯示在屏幕上只祠,但并非必須如此。通過片段扰肌,能夠使應(yīng)用輕松適應(yīng)不同尺寸屏幕抛寝。
  • 視圖(View),是最小的用戶界面單元曙旭,可以直接包含在活動中盗舰,也可以包含在活動的片段中。視圖可以用Java代碼創(chuàng)建桂躏,但更好的方式是使用XML布局來定義钻趋。每中視圖都有其一系列的屬性,它們決定了視圖功能剂习、行為和外觀蛮位。
  • 意圖(Intent),是一種行為描述機制(如選擇照片进倍,打電話等)土至。在Android中,幾乎一切都是通過意圖來實現(xiàn)的猾昆,這給我們提供了大量替換或重用組件的機會陶因。
  • 服務(wù)(Service),是運行在后臺的任務(wù),無需用戶直接與之交互垂蜗。
  • 內(nèi)容提供者楷扬,是一組數(shù)據(jù)和用于讀取它們的自定義API,這是在應(yīng)用之間共享全局數(shù)據(jù)的最好方法贴见。

補充:
關(guān)于使用資源烘苹。資源是本地化的文本字符串、位圖或程序需要的其他非代碼信息片部。你將在項目的res目錄中創(chuàng)建和存儲資源镣衡。Android資源編輯器(aapt)根據(jù)資源文件所屬的文件夾和格式對其進行處理。資源編輯器對資源進行壓縮和打包,再生成一個名為R的類廊鸥,其中包含可以用于在程序中引用這些資源的標識符望浩。

3.前臺只能有一個應(yīng)用
在Android中只有一個前臺應(yīng)用,它通常占據(jù)除狀態(tài)欄以外的整個屏幕惰说。
用戶運行應(yīng)用時磨德,Android會啟動該應(yīng)用并讓它進入前臺。系統(tǒng)的活動管理器會將所有用戶調(diào)用的其他應(yīng)用或應(yīng)用中的其他屏幕都記錄到應(yīng)用棧中吆视。每當用戶按返回按鈕時典挑,都將返回到棧中的前一個屏幕。從用戶角度來看啦吧,著很想Web瀏覽器的歷史記錄您觉,按后退鍵返回到前一個頁面。相關(guān)的知識點如下:
(1) 進程不等于應(yīng)用丰滑。在內(nèi)部顾犹,每個用戶界面屏幕都由一個活動表示。每個活動都有生命周期褒墨。應(yīng)用由一個或多個活動以及包含這些活動的Linux進程組成炫刷。
(2) 活動的生命周期。在生命周期內(nèi)郁妈,Android程序的活動可處于多種狀態(tài)浑玛。開發(fā)人員不能控制程序所處的狀態(tài),這完全由系統(tǒng)管理噩咪。然而顾彰,在狀態(tài)發(fā)生變化前,系統(tǒng)會調(diào)用方法onXXX()來通知開發(fā)人員胃碾。

活動的生命周期

說明:
在創(chuàng)建的Acitivity子類時涨享,需要重寫如下方法,Android會在合適的時候調(diào)用它們仆百。

  • onCreate(Bundle):活動首次啟動時被調(diào)用厕隧。可以用它來執(zhí)行一次性初始化工作俄周。onCreate()接收一個參數(shù)吁讨,這個參數(shù)要么為null,要么為方法onSaveInstanceState()保存的狀態(tài)信息峦朗。
  • onStart():表明活動即將顯示給用戶建丧。
  • onResume():活動能夠開始與用戶交互時被調(diào)用。這是啟動動畫和音樂的理想場所波势。
  • onPause():在活動即將進入后臺(通常是由于啟動了另一個活動)時被調(diào)用翎朱。應(yīng)該在這個方法中保存程序的持久化狀態(tài)橄维。
  • onStop():在活動對用戶不再可見且暫時不需要該活動時被調(diào)用。如果內(nèi)存緊張闭翩,該方法可能不會被調(diào)用(系統(tǒng)可能會直接終止進程)挣郭。
  • onRestart():如果該方法被調(diào)用,就表明原本處于停止狀態(tài)的活動重新顯示到屏幕上疗韵。
  • onDestroy():在活動銷毀前被調(diào)用。如果內(nèi)存緊張侄非,該方法可能不會被調(diào)用(系統(tǒng)可能會直接終止進程)蕉汪。
  • onSaveInstanceState(Bundle):Android調(diào)用這個方法讓活動保存其特有的狀態(tài)。通常不需要重寫該方法逞怨。因為默認實現(xiàn)會自動保存所有用戶界面控件的狀態(tài)者疤。
  • onRestoreInstanceState(Bundle):根據(jù) onSaveInstanceState()方法保存的狀態(tài)重新初始化活動時被調(diào)用,其默認實現(xiàn)恢復(fù)用戶界面狀態(tài)叠赦。
    不在前臺運行的活動可能會被停止驹马。另外,包含此類活動的Linux進程也可能隨時被終止除秀,以便為新活動騰出空間糯累。在某些情況下,onPause()可能是最后一個被調(diào)用的活動方法册踩,因此對于要保留下次使用的任何數(shù)據(jù)泳姐,都必須在這里進行保存。
    (3) 使用片段簡化工作暂吉。片段是應(yīng)用的組成部分胖秒,它們包含在活動中,其生命周期與活動很像慕的。事實上阎肝,很多生命周期方法都是由活動的方法調(diào)用的(如Fragment.onResume()間接地由Activity.onResume()調(diào)用)。
    片段的生命周期

    說明:不存在包含它們的活動時肮街,片段依然可以存在风题。例如,如果你在應(yīng)用運行時旋轉(zhuǎn)屏幕低散,活動通常會被銷毀并重新創(chuàng)建俯邓,以適應(yīng)新的屏幕朝向,但片段通常會被保留熔号。這樣能夠在朝向切換期間保留網(wǎng)絡(luò)連接等重量級對象稽鞭。

4.安全保障
每個應(yīng)用都運行在自己的Linux進程中。硬件禁止一個進程去訪問另一個進程的內(nèi)存引镊。另外朦蕴,每個應(yīng)用都被分配了一個獨特的用戶ID篮条。只要設(shè)備沒有被root以更高的權(quán)限運行,一個應(yīng)用創(chuàng)建的文件就不能被其他應(yīng)用讀寫吩抓。另外涉茧,限制了對一些關(guān)鍵操作的訪問。要使用這些操作疹娶,必須在清單文件中請求相應(yīng)的權(quán)限伴栓。在應(yīng)用安裝時,包管理器將根據(jù)證書授予或不授予請求的權(quán)限雨饺,并在必要時詢問用戶钳垮。下面是常見的權(quán)限:

  • INTERNET:訪問Internet。
  • READ_CONTACTS:讀取但不寫入用戶的聯(lián)系人數(shù)據(jù)额港。
  • WRITE_CONTACTS:寫入但不讀取用戶的聯(lián)系人數(shù)據(jù)饺窿。
  • RECEIVE_SMS:監(jiān)視收到的短信。
  • ACCESS_COARSE_LOCATION:使用粗糙的位置提供器移斩,如基站或Wi-Fi肚医。
  • ACCESS_FINE_LOCATION:使用更精確的位置提供器,如GPS向瓷。

補充:Android甚至可以限制訪問系統(tǒng)的特定部分肠套。通過在清單文件中使用XML標簽、可指定誰可啟動活動风罩、啟動或綁定服務(wù)糠排、向接收器廣播意圖以及訪問內(nèi)容提供器中的數(shù)據(jù)。

題外話:

世界上最快樂的事超升,莫過于為理想而奮斗入宦。——蘇格拉底


為理想而奮斗
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末室琢,一起剝皮案震驚了整個濱河市乾闰,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌盈滴,老刑警劉巖涯肩,帶你破解...
    沈念sama閱讀 219,427評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異巢钓,居然都是意外死亡病苗,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,551評論 3 395
  • 文/潘曉璐 我一進店門症汹,熙熙樓的掌柜王于貴愁眉苦臉地迎上來硫朦,“玉大人,你說我怎么就攤上這事背镇∫д梗” “怎么了泽裳?”我有些...
    開封第一講書人閱讀 165,747評論 0 356
  • 文/不壞的土叔 我叫張陵,是天一觀的道長破婆。 經(jīng)常有香客問我涮总,道長,這世上最難降的妖魔是什么祷舀? 我笑而不...
    開封第一講書人閱讀 58,939評論 1 295
  • 正文 為了忘掉前任瀑梗,我火速辦了婚禮,結(jié)果婚禮上裳扯,老公的妹妹穿的比我還像新娘夺克。我一直安慰自己,他們只是感情好嚎朽,可當我...
    茶點故事閱讀 67,955評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著柬帕,像睡著了一般哟忍。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上陷寝,一...
    開封第一講書人閱讀 51,737評論 1 305
  • 那天锅很,我揣著相機與錄音,去河邊找鬼凤跑。 笑死爆安,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的仔引。 我是一名探鬼主播扔仓,決...
    沈念sama閱讀 40,448評論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼咖耘!你這毒婦竟也來了翘簇?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,352評論 0 276
  • 序言:老撾萬榮一對情侶失蹤儿倒,失蹤者是張志新(化名)和其女友劉穎版保,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體夫否,經(jīng)...
    沈念sama閱讀 45,834評論 1 317
  • 正文 獨居荒郊野嶺守林人離奇死亡彻犁,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,992評論 3 338
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了凰慈。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片汞幢。...
    茶點故事閱讀 40,133評論 1 351
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖溉瓶,靈堂內(nèi)的尸體忽然破棺而出急鳄,到底是詐尸還是另有隱情谤民,我是刑警寧澤,帶...
    沈念sama閱讀 35,815評論 5 346
  • 正文 年R本政府宣布疾宏,位于F島的核電站张足,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏坎藐。R本人自食惡果不足惜为牍,卻給世界環(huán)境...
    茶點故事閱讀 41,477評論 3 331
  • 文/蒙蒙 一瓷胧、第九天 我趴在偏房一處隱蔽的房頂上張望玄渗。 院中可真熱鬧,春花似錦败玉、人聲如沸蛀恩。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,022評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽双谆。三九已至壳咕,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間顽馋,已是汗流浹背谓厘。 一陣腳步聲響...
    開封第一講書人閱讀 33,147評論 1 272
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留寸谜,地道東北人竟稳。 一個月前我還...
    沈念sama閱讀 48,398評論 3 373
  • 正文 我出身青樓,卻偏偏與公主長得像熊痴,于是被迫代替她去往敵國和親他爸。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 45,077評論 2 355