四大組件的做用(面試問到過)

1、Activity

Activity是一種展現型組件,具備兩種啓動方式:ide

  • 顯示啓動,經過Intent實現
  • 隱式啓動,也須要Intent,但還須要在AndroidManifest.xml中添加IntentFilter。

在實現Activity時,須要繼承Activity抽象類,並重寫onCreate()方法,於是Activity具備啓動和中止概念。線程


2、Service

Service是一種計算型組件,其生命週期是嵌套在主線程的。xml

Service有兩種啓動模式繼承

  • 啓動狀態
  • 綁定狀態

注意:在AndroidManifest.xml中註冊Service時,只須要註冊服務的類名便可。生命週期

啓動狀態和綁定狀態的區別在於:get

啓動以後,Service的動做不受Activity的控制(startService)域名

綁定以後,Service的動做是由Activity控制的(bindService)it

在實現Service時,須要繼承Service抽象類,並重寫onBind()方法,於是Service也具備啓動和中止的概念。ast


3、BroadcastReceiver

BroadcastReceiver是一種消息型組件。因爲BroadcastReceiver能夠在不一樣的組件甚至不一樣的應用之間傳遞消息,因此其能夠脫離Activity實現,除了要在AndroidManifest.xml中註冊廣播類名外,還須要添加IntentFilter,這樣就可讓Receiver選擇性的接受廣播。當註冊完成後,及時沒有Activity啓動,也能夠接受廣播。date

在實現BroadcastReceiver時,須要繼承BroadcastReceiver抽象類,可是不須要重寫onCreate()方法,只要重寫onReceive()方法便可。所以BroadcastReceiver沒有啓動和中止的概念,更像是一個系統級的監聽器。


4、ContentProvider

ContentProvider是一種數據共享性組件,能夠在應用之間共享數據,因此與BroadcastReceiver同樣,其能夠脫離Activity實現。在實現ContentProvider時,須要繼承ContentProvider抽象類,而後在AndroidManifest.xml中註冊類名和ContentProvider的域名。

該類須要重寫六個方法,即onCreate(),query(),insert(),update(),delete(),getType()

與前三個組件不一樣,ContentProvider沒有使用intent,而是使用URI來判斷可否爲ContentResolver提供數據共享。


總結:

  1. Activity和Service有生命週期,而BroadcastReceiver與ContentProvider採用監聽機制,沒有生命週期
  2. 四大組件都須要在AndroidManifest.xml中註冊
  3. 除了ContentProvider外,其餘組件都要用到intent
  4. 四大組件實現時都要繼承其抽象的父類
  5. Service與Activity關係最爲密切,BroadcastReceiver和ContentProvider的實現基本不依賴與Activity。
相關文章
相關標籤/搜索