1 回答

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