什么是組件 | 組件作用 | 組件化的指導思想 |
---|---|---|
是對數(shù)據(jù)和方法的簡單封裝猪腕,功能單一舞蔽,高內聚,并且是業(yè)務能劃分的最小粒度 | 側重于單一功能的內聚码撰,偏向于解耦 | 分而治之,并行開發(fā)个盆,一切皆組件 |
一脖岛、Activity組件
Activity是Android最重要的組件,負責用戶界面的設計
-
Activity用戶界面框架采用MVC 模式(Model View Controller)
控制器:負責接受并響應程序的外部動作
通過視圖:反饋應用程序給用戶的信息(UI 界面反饋)
模型:應用程序的核心颊亮,用于保存數(shù)據(jù)和代碼
Activity之間通過Intent進行通信
二柴梆、Service組件
一個Service 是一段長生命周期的,沒有用戶界面的程序终惑,可以用來開發(fā)如監(jiān)控類程序
三绍在、BroadcastReceiver組件
-
在Android系統(tǒng)中,當有特定事件發(fā)生時就會產(chǎn)生相應的廣播
- 例如,開機啟動完成偿渡、收到短信臼寄、電池電量改變、網(wǎng)絡狀態(tài)改變等
NotificationManager(通知管理器)會在手機的狀態(tài)欄里產(chǎn)生一個具有提示音的通知溜宽,用戶通過下滑手勢可以查看相關信息
BroadcastReceiver(廣播接收者)接收來自系統(tǒng)或其他應用程序的廣播吉拳,并做出回應
四、ContentProvider組件
為了跨進程共享數(shù)據(jù)适揉, Android提供了ContentProvider接口留攒,可以在無須了解數(shù)據(jù)源、路徑的情況下嫉嘀,對共享數(shù)據(jù)進行查詢炼邀、添加、刪除和更新等操作
五剪侮、Context
-
在應用程序中Context的具體實現(xiàn)子類就是:Activity拭宁,Service,Application
- Context數(shù)量 = Activity數(shù)量 + Service數(shù)量 + 1
BroadcastReceiver票彪、ContentProvider并不是Context的子類红淡,其所持有的Context都是由其他組件傳遞過來的
Context提供了關于應用環(huán)境全局信息的接口。它是一個抽象類降铸,它的執(zhí)行被Android系統(tǒng)所提供
Android程序不像Java程序一樣,隨便創(chuàng)建一個類推掸,寫個main()方法就能運行桶蝎,Android應用模型是基于組件的應用設計模式,組件的運行要有一個完整的Android工程環(huán)境谅畅,在這個環(huán)境下登渣,Activity、Service等系統(tǒng)組件才能夠正常工作毡泻,而這些組件并不能采用普通的Java對象創(chuàng)建方式胜茧,new一下就能創(chuàng)建實例了,而是要有它們各自的上下文環(huán)境仇味,也就是我們這里討論的Context呻顽。可以這樣講丹墨,Context是維持Android程序中各組件能夠正常工作的一個核心功能類
六廊遍、Application
當Android程序啟動時系統(tǒng)會創(chuàng)建一個Application類型的對象,用來存儲系統(tǒng)的一些信息完成數(shù)據(jù)傳遞贩挣、共享和緩存等操作
Application對象的生命周期是整個程序中最長的喉前,它的生命周期就等于這個程序的生命周期没酣,且是全局、單例的卵迂,即在不同的Activity和Service中獲得的對象都是同一個對象
七裕便、意圖對象Intent
Android提供輕量級的進程間通信機制Intent,使跨進程組件通信和發(fā)送系統(tǒng)廣播成為可能狭握,組件Activity闪金、Service和BroadcastReceiver都是通過消息機制被啟動(激活)的,其使用的消息就封裝在對象Intent里
八哎垦、Android應用程序的運行入口
在一個Android應用程序開始運行的時候,會單獨啟動一個進程(Process)恃疯。默認的情況下漏设,這個應用程序中的所有組件(Activity、Service今妄、BroadcastReceiver和ContentProvider)都會運行在這個進程里郑口。
一個Android應用程序通常由多個Activity組成,但只有一個主Activity盾鳞。在項目清單文件中使用<activity>標簽注冊主Activity時犬性,還需要內嵌<intent-filter>、<action>和<category>標簽腾仅,以此說明該Activity為Android應用程序的入口乒裆。定義一個MainActivity.java為應用的主Activity代碼如下:
<activity android:name=".activity1" android:label="@string/app_name">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>