通讀《瘋狂Android講義》筆記 01 ___Android基礎(chǔ)篇

文 | 莫若吻


注:
1.本文內(nèi)容參考 李剛的《瘋狂Android講義》一書痒蓬。
2.此書適合有一定Java基礎(chǔ)、初學(xué)Android的同學(xué)閱讀與學(xué)習(xí)班挖。我最近想鞏固下Android基礎(chǔ)知識就來拜讀一下此書萧芙。
3.本文筆記側(cè)重于知識梳理,不側(cè)重于講解动羽,如果有同學(xué)遇到不懂的知識點(diǎn)可以給我留言或者買書自行學(xué)習(xí)运吓。
4.如果你最近想?yún)⒓用嬖嚲猩冢梢詤⒖即宋膹?fù)習(xí)哦倦青!

安卓圖標(biāo).png

一.第一章 Android應(yīng)用

1.Android平臺架構(gòu)及特性

Android系統(tǒng)的底層建立在Linux系統(tǒng)之上产镐,Android平臺由操作系統(tǒng)癣亚、中間件逃糟、用戶界面和應(yīng)用軟件四層組成绰咽,采用一種被稱為軟件疊層(Software Stack)的方式進(jìn)行構(gòu)建取募。
這種軟件疊層結(jié)構(gòu)使層與層之間相互分離蟆技,明確各層的分工质礼。這種分工保證了層與層之間的低耦合眶蕉。當(dāng)下層的層內(nèi)或?qū)酉掳l(fā)生改變時,上層應(yīng)用程序無須任何改變碱璃。

2.Android系統(tǒng)組成

Android系統(tǒng)主要由應(yīng)用程序?qū)忧镀鳌?yīng)用程序框架、函數(shù)庫蚓让、Android運(yùn)行時Linux內(nèi)核等5部分組成凭疮。
1)開發(fā)Android應(yīng)用程序(即Android APP)是面向底層的應(yīng)用程序框架進(jìn)行的执解。
2)Android運(yùn)行時由Android核心庫集Dalvik虛擬機(jī)2部分組成衰腌。每一個Android應(yīng)用程序都運(yùn)行在一個單獨(dú)的Dalvik虛擬機(jī)內(nèi)右蕊。
3)Dalvik虛擬機(jī)依賴于Linux內(nèi)核提供的核心功能饶囚。
4)Linux內(nèi)核提供了安全性萝风、內(nèi)存管理紫岩、進(jìn)程管理泉蝌、網(wǎng)路協(xié)議棧和驅(qū)動模型等核心系統(tǒng)服務(wù)勋陪。

3.Dalvik虛擬機(jī)與JVM的區(qū)別

  • Dalvik虛擬機(jī)并不遵守JVM(Java Virtual Machine)的規(guī)范,兩者并不兼容缘挽。
  • JVM運(yùn)行的是Java字節(jié)碼(一般是.class文件)壕曼;
    Dalvik運(yùn)行的是專有的dex文件(Dalvik Executable)等浊。
  • JVM直接從.class文件或JAR包中加載字節(jié)碼后運(yùn)行筹燕;
    Dalvik則需要通過DX工具將應(yīng)用程序的所有. class文件譯成.dex文件撒踪,Dalvik則運(yùn)行.dex文件。
  • Dalvik虛擬機(jī)非常適合在移動端上使用掸绞;相對于PC或服務(wù)器上運(yùn)行的虛擬機(jī)衔掸,Dalvik不需要很快的CPU計算速度和大量的內(nèi)存空間俺抽。
  • JVM都是基于棧的磷斧,而Dalvik則是基于寄存器的弛饭。

4.Dalvik虛擬機(jī)的特點(diǎn)

  • 運(yùn)行專有的.dex文件。
    專有的.dex文件減少了.class文件中的冗余信息栓霜,而且會將所有的.class文件整合到一個文件中胳蛮,從而提高運(yùn)行性能仅炊,而且DX工具還會對.dex文件進(jìn)行一些性能優(yōu)化。
  • 基于寄存器實(shí)現(xiàn)抚垄。
    大部分虛擬機(jī)包括JVM都是基于棧的桐经,而Dalvik則是基于寄存器的阴挣。一般基于寄存器的虛擬機(jī)具有更好的表現(xiàn)纺腊,但在硬件通用性上略差。

5.AndroidManifest.xml清單文件

包括信息:

  • 應(yīng)用程序的包名誓沸,該包名將作為應(yīng)用的唯一標(biāo)識拜隧。
  • 應(yīng)用程序所包含的組件虹蓄,eg:Activity薇组、Service律胀、BroadcastReceiver貌矿、ContentProvider等逛漫。
  • 應(yīng)用程序兼容的最低版本酌毡。
  • 應(yīng)用程序使用系統(tǒng)所需的權(quán)限聲明
  • 其他程序訪問該程序所需的權(quán)限聲明菩暗。
    eg:
<?xml version="1.0" encoding="utf-8"?>
<!--指定Android應(yīng)用包名:package -->
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    package="com.promise.sun">
 <!--應(yīng)用權(quán)限聲明 -->
 <uses-permission android:name="android.permission.VIBRATE" />
 <!--指定Android應(yīng)用的標(biāo)簽和圖標(biāo):label停团、icon -->
 <application
        android:name=".SunApplication"
        android:allowBackup="false"
        android:hardwareAccelerated="true"
        android:icon="@drawable/ic_launcher"
        android:label="${APP_NAME}"
        android:theme="@style/AppTheme"
        android:largeHeap="true"
        tools:replace="android:allowBackup,android:label,android:theme">
        <!--定義Android的一個組件:activity -->
        <activity
            android:name=".app.activity.WelcomeActivity"
            android:screenOrientation="portrait"
            android:theme="@style/StartAppTheme">
            <intent-filter>
                <!--指定此activity為應(yīng)用程序入口 -->
                <action android:name="android.intent.action.MAIN" />
                <!--加載該應(yīng)用程序時運(yùn)行此activity -->
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        <!--定義Android的一個組件:service -->
        <service android:name=".app.ApkUpdateService" />
 </application>
</manifest>

6.Android組件簡介

1)Activity和View

Activity是Android的四大組件之一佑稠。
Activity是Android中負(fù)責(zé)與用戶交互的組件讶坯,只能通過setContentView(view);來顯示指定組件。
View組件是所有UI控件、容器控件的基類婉烟,但view組件需要放到容器組件中或者使用Activity將其顯示出來似袁。
Note:ViewGroup是View的子類咐刨。

2)Service

Service是Android的四大組件之一而涉。擁有獨(dú)立的生命周期联予。
Service作用:一般用于為其他組件提供后臺服務(wù)和監(jiān)控其他組件的運(yùn)行狀態(tài)沸久。
Service與Avtivity的區(qū)別在于:Service通常位于后臺運(yùn)行卷胯,一般不需與用戶交互,因此Service沒有圖形用戶界面挺峡。

3)BroadcastReceiver

BroadcastReceiver是Android的四大組件之一沙郭。廣播消息接收器吓著,對Android應(yīng)用中其他組件進(jìn)行監(jiān)聽送挑。
注冊系統(tǒng)級的監(jiān)聽事件有兩種方式

  • 在Java 代碼中通過Context.registReceiver();完成注冊廣播惕耕。
  • 在清單文件中使用<receiver …… />完成注冊。

4)ContentProvider

ContentProvider是Android的四大組件之一欺缘。
ContentProvider為Android應(yīng)用之間實(shí)現(xiàn)實(shí)時數(shù)據(jù)交換。
Note:一般與ContentProvider結(jié)合使用的是ContentResolver,一個應(yīng)用程序使用ContentProvider暴露自己的數(shù)據(jù)蛤铜,而另一個應(yīng)用程序則通過ContentResolver來訪問數(shù)據(jù)嫩絮。

5)Intent和IntentFilter

嚴(yán)格講 Intent并不是Android應(yīng)用組件。它是Android應(yīng)用內(nèi)不同組件之間通信的載體围肥。
Note:Activity剿干、Service、BroadcastReceiver三種組件之間的通信都以Intent作為載體穆刻,只使用時略有區(qū)別置尔。

  • 啟動一個Activity,使用Context的startActivity(intent);方法蛹批。
  • 啟動一個Service撰洗,使用 startService(intent); 或者 bindService(intent,serviceConnection,intFlags);方法。
  • 觸發(fā)一個BroadcastReceiver腐芍,使用sendBroadcast(intent); 或者sendStickyBroadcast(intent) 或者;sendOrderedBroadcast(intent,receiverPermission);方法發(fā)送廣播差导。

顯示Intent和隱式Intent:
顯示Intent明確指定需要啟動或者觸發(fā)的組件的類名
隱式Intent只是指定需要啟動或者觸發(fā)的組件應(yīng)該滿足的條件

Note:隱式Intent需要通過IntentFilter實(shí)現(xiàn),被調(diào)用組件使用IntentFilter來聲明自身所滿足的條件外冀。



版權(quán)聲明:本文為博主原創(chuàng)文章,轉(zhuǎn)載請必須注明出處并私信告知與我藕畔,謝謝溶弟!

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖姨谷,帶你破解...
    沈念sama閱讀 219,110評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異,居然都是意外死亡檬姥,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,443評論 3 395
  • 文/潘曉璐 我一進(jìn)店門凤优,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事楚昭∧蚱叮” “怎么了身冀?”我有些...
    開封第一講書人閱讀 165,474評論 0 356
  • 文/不壞的土叔 我叫張陵,是天一觀的道長仁卷。 經(jīng)常有香客問我丰介,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,881評論 1 295
  • 正文 為了忘掉前任还棱,我火速辦了婚禮秤茅,結(jié)果婚禮上五垮,老公的妹妹穿的比我還像新娘莉撇。我一直安慰自己,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,902評論 6 392
  • 文/花漫 我一把揭開白布叠纹。 她就那樣靜靜地躺著驼卖,像睡著了一般。 火紅的嫁衣襯著肌膚如雪整胃。 梳的紋絲不亂的頭發(fā)上蔽午,一...
    開封第一講書人閱讀 51,698評論 1 305
  • 那天,我揣著相機(jī)與錄音偶惠,去河邊找鬼。 笑死蹋盆,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的竞慢。 我是一名探鬼主播,決...
    沈念sama閱讀 40,418評論 3 419
  • 文/蒼蘭香墨 我猛地睜開眼准脂,長吁一口氣:“原來是場噩夢啊……” “哼狸膏!你這毒婦竟也來了闷板?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,332評論 0 276
  • 序言:老撾萬榮一對情侶失蹤顶瞒,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體鲤氢,經(jīng)...
    沈念sama閱讀 45,796評論 1 316
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡搀擂,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,968評論 3 337
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了卷玉。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片哨颂。...
    茶點(diǎn)故事閱讀 40,110評論 1 351
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖相种,靈堂內(nèi)的尸體忽然破棺而出威恼,到底是詐尸還是另有隱情,我是刑警寧澤寝并,帶...
    沈念sama閱讀 35,792評論 5 346
  • 正文 年R本政府宣布箫措,位于F島的核電站,受9級特大地震影響衬潦,放射性物質(zhì)發(fā)生泄漏斤蔓。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,455評論 3 331
  • 文/蒙蒙 一镀岛、第九天 我趴在偏房一處隱蔽的房頂上張望弦牡。 院中可真熱鬧,春花似錦漂羊、人聲如沸驾锰。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,003評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽椭豫。三九已至,卻和暖如春旨指,著一層夾襖步出監(jiān)牢的瞬間赏酥,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,130評論 1 272
  • 我被黑心中介騙來泰國打工淤毛, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人算柳。 一個月前我還...
    沈念sama閱讀 48,348評論 3 373
  • 正文 我出身青樓低淡,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子蔗蹋,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,047評論 2 355

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