1 回答

TA貢獻1812條經(jīng)驗 獲得超5個贊
一般來說Android 程序主要由下列四個部分組成,分別是:活動(Activity) - 用于表現(xiàn)功能服務(wù)(Service) - 相當于后臺運行的Activity廣播接收器(BroadcastReceiver) - 用于接收廣播意圖(Intent)- 用于連接以上各個組件,并在其間傳遞消息
1 Activity 介紹
Android 中,Activity 是所有程序的根本,所有程序的流程都運行在Activity 之中,Activity可以算是開發(fā)者遇到的最頻繁,也是Android 當中最基本的模塊之一。在Android的程序當中,Activity 一般代表手機屏幕的一屏。如果把手機比作一個瀏覽器,那么Acitivity就相當于一個網(wǎng)頁。在Activity 當中可以添加一些Button、Check box 等控件??梢钥吹紸ctivity 的概念和網(wǎng)頁的概念相當類似。 一般一個Android 應(yīng)用是由多個Activity 組成的。這多個Activity 之間可以進行相互跳轉(zhuǎn),例如,按下一個Button 按鈕后,可能會跳轉(zhuǎn)到其他的Activity。和網(wǎng)頁跳轉(zhuǎn)稍微有些不一樣的是,Activity 之間的跳轉(zhuǎn)有可能返回值,例如,從Activity A 跳轉(zhuǎn)到Activity B,那么當Activity B 運行結(jié)束的時候,有可能會給Activity A 一個返回值。這樣做在很多時候是相當方便的。 當打開一個新的屏幕時,之前一個屏幕會被置為暫停狀態(tài),并且壓入歷史堆棧中。用戶可以通過回退操作返回到以前打開過的屏幕。我們可以選擇性的移除一些沒有必要保留的屏幕,因為Android 會把每個應(yīng)用的開始到當前的每一個屏幕保存在堆棧中。Activity 是由Android 系統(tǒng)進行維護的,它也有自己的生命周期,即它的一個產(chǎn)生、運行、銷毀的一個周期,對于Activity,關(guān)鍵是其生命周期的把握,其次就是狀態(tài)的保存和恢復(onSaveInstanceState onRestoreInstanceState),以及Activity 之間的跳轉(zhuǎn)和數(shù)據(jù)傳輸(intent)。
2 Service 介紹
Service 是android 系統(tǒng)中的一種組件,它跟Activity 的級別差不多,但是他不能自己運行,只能后臺運行,并且可以和其他組件進行交互。Service 是沒有界面的長生命周期的代碼。Service 是一種程序,它可以運行很長的時間,但是它卻沒有用戶界面。這么說有點枯燥,我們來看個例子。打開一個音樂播放器的程序,這個時候若想上網(wǎng)了,那么,我們打開Android 的瀏覽器,這個時候雖然我們已經(jīng)進入了瀏覽器這個程序,但是,歌曲的播放并沒有停止,而是在后臺繼續(xù)一首接著一首的播放。其實這個播放就是由播放音樂的Service進行控制。當然這個播放音樂的Service也可以停止,例如,當播放列表里邊的歌曲都結(jié)束,或者用戶按下了停止音樂播放的快捷鍵等。service 可以在和多場合的應(yīng)用中使用,比如播放多媒體的時候用戶啟動了其他Activity這個時候程序要在后臺繼續(xù)播放,比如檢測SD 卡上文件的變化,再或者在后臺記錄你地理信息位置的改變等等,總之服務(wù)嘛,總是藏在后頭的。
3 BroadcastReceiver 介紹
在Android 中,Broadcast 是一種廣泛運用的在應(yīng)用程序之間傳輸信息的機制。而BroadcastReceiver 是對發(fā)送出來的Broadcast進行過濾接受并響應(yīng)的一類組件??梢允褂肂roadcastReceiver 來讓應(yīng)用對一個外部的事件做出響應(yīng)。這是非常有意思的,例如,當電話呼入這個外部事件到來的時候,可以利用BroadcastReceiver 進行處理。例如,當下載一個程序成功完成的時候,仍然可以利用BroadcastReceiver 進行處理。BroadcastReceiver不能生成UI,也就是說對于用戶來說不是透明的,用戶是看不到的。BroadcastReceiver通過NotificationManager 來通知用戶這些事情發(fā)生了。BroadcastReceiver 既可以在AndroidManifest.xml 中注冊,也可以在運行時的代碼中使用Context.registerReceiver()進行注冊。只要是注冊了,當事件來臨的時候,即使程序沒有啟動,系統(tǒng)也在需要的時候啟動程序。各種應(yīng)用還可以通過使用Context.sendBroadcast () 將它們自己的intent broadcasts廣播給其他應(yīng)用程序。注冊BroadcastReceiver有兩種方式:
4 Intent 介紹
Intent 是一個將要執(zhí)行的動作的抽象的描述,一般來說是作為參數(shù)來使用,由Intent來協(xié)助完成android 各個組件之間的通訊。Intent 負責對應(yīng)用中一次操作的動作、動作涉及數(shù)據(jù)、附加數(shù)據(jù)進行描述,Android 則根據(jù)此Intent 的描述,負責找到對應(yīng)的組件,將Intent 傳遞給調(diào)用的組件,并完成組件的調(diào)用。因此,Intent 在這里起著一個媒體中介的作用,專門提供組件互相調(diào)用的相關(guān)信息,實現(xiàn)調(diào)用者與被調(diào)用者之間的解耦。例如,在一個聯(lián)系人維護的應(yīng)用中,當我們在一個聯(lián)系人列表屏幕(假設(shè)對應(yīng)的Activity 為listActivity)上,點擊某個聯(lián)系人后,希望能夠跳出此聯(lián)系人的詳細信息屏幕(假設(shè)對應(yīng)的Activity為detailActivity)。為了實現(xiàn)這個目的,listActivity需要構(gòu)造一個Intent,這個Intent 用于告訴系統(tǒng),我們要做"查看"動作,此動作對應(yīng)的查看對象是"某聯(lián)系人",然后調(diào)用startActivity(Intent intent),將構(gòu)造的Intent 傳入,系統(tǒng)會根據(jù)此Intent 中的描述,到ManiFest中找到滿足此Intent 要求的Activity,系統(tǒng)會調(diào)用找到的Activity,即為detailActivity,最終傳入Intent,detailActivity 則會根據(jù)此Intent中的描述,執(zhí)行相應(yīng)的操作。Intent 主要是用來啟動其他的activity 或者service,所以可以將intent 理解成activity 之間的粘合劑。Intent具體有一下3 種形式: 通過startActivity 方法來啟動一個新的Activity; 通過broadcast Intent 機制可以將一個Intent 發(fā)送給任何對這個Intent 感興趣的BroadcastReceiver; 通過startService (Intent) 或bindService(Intent,ServiceConnection,int) 來和后臺的Service 進行交互。[
- 1 回答
- 0 關(guān)注
- 817 瀏覽
添加回答
舉報